Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 我能';如果无法让此脚本处理包含空格的文件夹,我应该如何解决它?_Bash_Debugging_Syntax Error - Fatal编程技术网

Bash 我能';如果无法让此脚本处理包含空格的文件夹,我应该如何解决它?

Bash 我能';如果无法让此脚本处理包含空格的文件夹,我应该如何解决它?,bash,debugging,syntax-error,Bash,Debugging,Syntax Error,每当路径($1)包含一个或多个空格时,我无法使以下脚本工作。我应该做什么改变才能让它工作 #!/bin/bash ws=/tmp/$RANDOM && mkdir $ws && cd $ws TRG=$1 && SRC=$1 if [ "$1" != "" ];then if [ "$3" != "" ];then if [ "$2" == "enc" ];then if [[ -d $1 ]];th

每当路径($1)包含一个或多个空格时,我无法使以下脚本工作。我应该做什么改变才能让它工作

#!/bin/bash
ws=/tmp/$RANDOM && mkdir $ws && cd $ws
TRG=$1 && SRC=$1
if [ "$1" != "" ];then
    if [ "$3" != "" ];then
        if [ "$2" == "enc" ];then
            if [[ -d $1 ]];then
                mv $1 ./
                zip -rq "$(basename $1).zip" "$(basename $1)" 
                SRC="$ws/$(basename $1).zip"
            fi
            openssl aes-256-cbc -a -salt -in $SRC -out $TRG -pass file:<( echo -n "$3" )
        elif [ "$2" == "dec" ];then
            mv $1 ./
            SRC="$ws/$(basename $1)"
            openssl aes-256-cbc -d -a -salt -in $SRC -out $TRG -pass file:<( echo -n "$3" )
            if grep -q "PK" <<<"$(awk 'FNR == 1 { print; exit }' $TRG)"; then
                rm "$ws/$(basename $TRG)"
                mv "$TRG" "$ws/$(basename $TRG)"
                TRG="$ws/$TRG"
                mkdir "$1"
                unzip -o -qq "$(basename $TRG)" -d "$(cd $1 && cd .. && pwd)"
            fi
        else
            echo "Incorrect operation"
        fi
    elif [ "$2" == "" ];then
        echo "Password and mode is required"
    else
        echo "Password is required"
    fi
else
    echo "No path specificated"
fi
rm -rf $ws
#/bin/bash
ws=/tmp/$RANDOM&&mkdir$ws&&cd$ws
TRG=$1&&SRC=$1
如果[“$1”!=”;然后
如果[“$3”!=”;然后
如果[“$2”==“enc”];然后
如果[[-d$1]];然后
mv$1/
zip-rq“$(basename$1).zip“$(basename$1)”
SRC=“$ws/$(basename$1).zip”
fi

openssl aes-256-cbc-a-salt-in$SRC-out$TRG-pass文件:您还需要引用
$(…)
中的变量。否则,这可能会导致意外行为。因此,将所有
“$(basename$1)”
替换为
“$(basename“$1”)”
。 并且还引用赋值
TRG=“$1”

那么它应该是这样的

#!/bin/bash
ws=/tmp/$RANDOM && mkdir "$ws" && cd "$ws" || exit
TRG="$1" && SRC="$1"
if [ "$1" != "" ];then
    if [ "$3" != "" ];then
        if [ "$2" == "enc" ];then
            if [[ -d $1 ]];then
                mv "$1" ./
                zip -rq "$(basename "$1").zip" "$(basename "$1")" 
                SRC="$ws/$(basename "$1").zip"
            fi
            openssl aes-256-cbc -a -salt -in "$SRC" -out "$TRG" -pass file:<( echo -n "$3" )
        elif [ "$2" == "dec" ];then
            mv "$1" ./
            SRC="$ws/$(basename "$1")"
            openssl aes-256-cbc -d -a -salt -in "$SRC" -out "$TRG" -pass file:<( echo -n "$3" )
            if grep -q "PK" <<<"$(awk 'FNR == 1 { print; exit }' "$TRG")"; then
                rm "$ws/$(basename "$TRG")"
                mv "$TRG" "$ws/$(basename "$TRG")"
                TRG="$ws/$TRG"
                mkdir "$1"
                unzip -o -qq "$(basename "$TRG")" -d "$(cd "$1" && cd .. && pwd)"
            fi
        else
            echo "Incorrect operation"
        fi
    elif [ "$2" == "" ];then
        echo "Password and mode is required"
    else
        echo "Password is required"
    fi
else
    echo "No path specificated"
fi
rm -rf "$ws"
#/bin/bash
ws=/tmp/$RANDOM&&mkdir“$ws”&&cd“$ws”| |退出
TRG=“$1”和&SRC=“$1”
如果[“$1”!=”;然后
如果[“$3”!=”;然后
如果[“$2”==“enc”];然后
如果[[-d$1]];然后
mv“$1”/
zip-rq“$(basename“$1”).zip“$(basename“$1”)”
SRC=“$ws/$(basename“$1”).zip”
fi

openssl aes-256-cbc-a-salt-in“$SRC”-out“$TRG”-pass file:运行您的代码,因为它会正确地解决您的问题:-)还要注意,
$(basename“$1”)
可以替换为
${1##*/
@谢谢,我将检查该站点并使用${1###*/}而不是basename!谢谢你的帮助!