我想输出“你还没有输入文件”。
如果用户在调用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语句
答案 0 :(得分:0)
我会像这样改写:
#!/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 ...
。
对于算术,我使用arithmetic evaluation。该手册令人困惑,可以使用所有这些,但你可以if (( ... ))
和C风格for (( i = 0; i < n; i++ ))
。
始终将$file
之类的变量包装在引号中:"$file"
。如果文件名中有空格这么简单,那么它就会破坏。
答案 1 :(得分:0)
对$#
的检查仅在循环位置参数的for
内运行 - 也就是说,由于循环,[ $# -gt 0 ]
只会在{{1}时运行非零。尝试在循环外移动支票。
(另外,您的大部分$#
都应引用($file
)。)