我正在尝试运行这些脚本,但我一直收到错误消息:
1 -
#!/bin/bash
filename=$1
if [ -f $filename ]
then
owner=`stat -c %U $filename`
grep $owner /etc/passwd
if [ $? -eq 0 ]; then
perm=`stat -c %a $filename | head -c 1`
if [ $perm -gt 3 ]; then
cat $filename | grep NOTE
fi
fi
fi
错误信息是:
stat:缺少操作数尝试`stat --help'获取更多信息。
2-
#!/bin/bash
NoSum=$1
sum=0
echo "Please enter $NoSum values one at a time"
for (( i=1; i<=$NoSum; i++ ))
do
echo "Next Value?"
read num
let "a = $sum + $num"
sum=$a
done
echo "The sum is : $sum"
错误信息是:
请一次输入一个值./scr3:第6行:((:i&lt; =:syntax 错误:操作数预期(错误标记为“&lt; =”)总和为:0
3-
#!/bin/bash
dir=$1
if [ -d $dir ]
then
perm=`stat -c %a $dir | head -c 1`
if [ $perm -gt 5 ]; then
cd $dir
for file in $dir/*
do
if ! [ -x "$file" ]
then
echo "$file"
fi
done
fi
fi
错误信息是:
stat:缺少操作数尝试`stat --help'获取更多信息。 ./scr4: 第8行:[: - gt:一元运算符预期
任何想法如何修复它们?
答案 0 :(得分:1)
程序没有错。你没有提供命令行参数。你必须将它作为
运行1和3:
./script.sh <filename>
2:
./script.sh <number>
$1
代表第一个命令行参数
答案 1 :(得分:0)
您需要在bash中引用变量,以防止在test
方括号[]
中出现分词问题,并且大部分时间都用于其他用途。
所以你的第一个脚本将是
#!/bin/bash
filename="$1"
if [ -f "$filename" ]
then
owner="`stat -c %U "$filename"`"
grep "$owner" /etc/passwd
if [ $? -eq 0 ]; then
perm="`stat -c %a "$filename" | head -c 1`"
if [ "$perm" -gt 3 ]; then
cat "$filename" | grep NOTE
fi
fi
fi
其他人有类似的错误