繁体   English   中英

不允许在上面写的linux设备

[英]linux device which don't allow to write on it

我有一个脚本,它会向一些单独的文件写一些警告(它的名称作为参数传递)。 如果出现警告,我想使此脚本失败。

因此,我需要传递一些文件名,如果有人尝试在其中写入文件,则该文件名将引发错误。 我想使用一些或多或少的惯用名称(以将其包含在脚本的手册页中)。

所以,假设我的脚本是

# myScript.sh
echo "Hello" > $1

如果我用

./myScript.sh /dev/stdin

它不会失败,因为/ dev / stdin不是只读设备(令人惊讶的是!)

./myScript.sh / 

它失败了,因为我想要它(因为/是目录,所以不能在那儿写)。 但是不是惯用的。

有一些漂亮的方法吗?

if [ -w "$1" ]
then
   echo "$Hello" > "$1" # Mind the double-quotes
fi

是您要寻找的。 如果您只有一个参数,则下面的方法甚至更好。

if [ -w "$*" ]
then
   echo "$Hello" > "$*" # Mind the double-quotes
fi

$*用于容纳非标准文件名。 "$*"将多个参数组合成一个单词。 检查[this]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM