不允许在其上写的linux设备

时间:2016-06-17 07:40:27

标签: linux bash

我有一个脚本,它将一些警告写入单独的文件(它的名称作为参数传递)。如果有警告,我想让这个脚本失败。

所以,我需要传递一些文件名,如果有人试图写在那里,必须引发错误。 我想使用一些或多或少的惯用名称(将其包含在我的脚本的手册页中)。

所以,假设我的脚本是

# myScript.sh
echo "Hello" > $1

如果我用

打电话
./myScript.sh /dev/stdin

它没有失败,因为/ dev / stdin不是只读设备(令人惊讶!) 之后

./myScript.sh / 

它失败了,因为我想要它(因为/是一个目录,你不能写在那里)。但这不是惯用语。

有没有一些漂亮的方法呢?

1 个答案:

答案 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 ]