繁体   English   中英

Bash脚本错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM