我需要查找某个位置是否是目录,以及它是否是ShellScript中的装载
我试过这个:
new_dir="/home/fruits/apple"
if [ -d "$new_dir" ]
then
if [ mountpoint -q "$new_dir" ]
then
echo "directory is mounted"
else
echo "directory is not mounted"
fi
fi
Run Code Online (Sandbox Code Playgroud)
但它没有用.给出错误
test_dir.sh: line 13: [: -q: binary operator expected
directory is not mounted
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙......我需要这个工作......
关键是说:
if [ mountpoint -q "$new_dir" ] # WRONG
Run Code Online (Sandbox Code Playgroud)
您不必使用test, [因为mountpoint -q "$new_dir"已经返回了一个布尔值.所以这就是你所需要的:
if mountpoint -q "$new_dir"
Run Code Online (Sandbox Code Playgroud)
来自man point:
Mountpoint检查目录是否为挂载点.
退出状态
如果目录是挂载点则为零,否则为非零.
事实上你甚至可以说:
mountpoint -q "$new_dir" && echo "mounted" || echo "not mounted"
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用[ ],那么你需要在里面执行命令并考虑退出状态:
if [ ! $(mountpoint -q "/home") ]; then
echo "directory is mounted"
else
echo "directory is not mounted"
fi
Run Code Online (Sandbox Code Playgroud)
注意我否定了结果[ ! expression ].
因为您在测试中编写了一个不受支持的表达式.
man test 解释它接受的语法:
[ EXPRESSION ]
[ ]
[ OPTION
Run Code Online (Sandbox Code Playgroud)
并且它还提到它以EXPRESSION确定的状态退出.
当你说mountpoint内部时[,bash假定它正在处理一个表达式.给定可能条件的列表(6.4 Bash条件表达式),第一个元素不是运算符的事实使得bash想要在它之后看到二元运算符,例如=,=~......因为它看到-q,它失败并提到-q为问题.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |