[英]Bash scripts errors
我正在尝试运行这些脚本,但是我一直收到错误消息:
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 <=:语法错误:预期的操作数(错误标记为“ <=”)总和为: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:期望一元运算符
任何想法如何解决它们?
程序没有错,您没有提供命令行参数,您必须以
1和3:
./script.sh <filename>
2:
./script.sh <number>
$1
代表第一个命令行参数
您需要在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
其他人有类似的错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.