我想输出“您尚未输入文件”。
如果用户在调用Unix脚本后没有输入任何内容,他们将收到该错误消息。
for var in "$@"
do
file=$var
if [ $# -eq 0 ]
then
echo "You have not entered a file"
elif [ -d $file ]
then
echo "Your file is a directory"
elif [ -e $file ]
then
sendToBin
else
echo "Your file $file does not exist"
fi我不知道到底是哪里出了问题,我相信这是我第一个if语句中的问题
发布于 2013-04-18 12:22:31
我会像这样重写它:
#!/bin/bash
if (( $# == 0 )); then
echo "You have not entered a file"
else
for file in "$@"; do
if [ -d "$file" ]; then
echo "Your file is a directory"
elif [ -e "$file" ]; then
echo sendToBin "$file"
else
echo "Your file $file does not exist"
fi
done
fi要点:
if ... else for ....if (( ... )),也可以使用C风格的for (( i = 0; i < n; i++ )).$file:"$file"。如果文件名中有像空格这样简单的东西,否则它将中断。发布于 2013-04-18 12:25:24
仅在循环遍历位置参数的for中运行对$#的检查-也就是说,由于循环的原因,仅当$#为非零时才运行[ $# -gt 0 ]。尝试将检查移动到循环之外。
(另外,您的大多数$file都应该加引号("$file")。)
https://stackoverflow.com/questions/16074339
复制相似问题