我有一个脚本,它将一些警告写入单独的文件(它的名称作为参数传递)。如果有警告,我想让这个脚本失败。
所以,我需要传递一些文件名,如果有人试图写在那里,必须引发错误。 我想使用一些或多或少的惯用名称(将其包含在我的脚本的手册页中)。
所以,假设我的脚本是
# myScript.sh
echo "Hello" > $1
如果我用
打电话./myScript.sh /dev/stdin
它没有失败,因为/ dev / stdin不是只读设备(令人惊讶!) 之后
./myScript.sh /
它失败了,因为我想要它(因为/是一个目录,你不能写在那里)。但这不是惯用语。
有没有一些漂亮的方法呢?
答案 0 :(得分:1)
if [ -w "$1" ]
then
echo "$Hello" > "$1" # Mind the double-quotes
fi
是您正在寻找的。如果你只是,下面甚至会更好 一个论点。
if [ -w "$*" ]
then
echo "$Hello" > "$*" # Mind the double-quotes
fi
$*
用于容纳非标准文件名。 "$*"
将多个参数组合成一个单词。检查[ this ]。