проблема с zip в сценарии оболочки. Почему это неправильно?

Потому что во втором примере $fрасширяется вашей оболочкой, а не cat. Предполагая, что fне установлено иначе в среде вашей оболочки, $fрасширяется до пустой строки, а catзатем читается со стандартного ввода, как если бы не было аргументов.

В вашем первом примере $fнаходится внутри одинарных кавычек, поэтому он не расширяется исходной оболочкой, но расширяется экземпляром sh, который видитcat "$f"и имеет набор fв своей среде.

0
24.11.2019, 14:28
1 ответ

в аргументах следует использовать кавычки...
и используйте $m вместо m в цикле for

#!/bin/bash
file_locker(){

m="$1"
for ((i=1;i<=$m;i++));
do
num=($(( 0 + RANDOM % 9 )))

echo -n "$num"

done > "$3"

mypin=$(echo "$3")
echo pin "$mypin"

myhash=$(echo "$mypin" | sha256sum)
echo hash "$myhash"

zip -P "$myhash" "$2".zip -r "$2" && rm "$2"

}
file_locker "$1" "$2" "$3"

zip error: Invalid command arguments..

вы получите это, если в вашем аргументе есть пробелы...

1
28.01.2020, 03:05

Теги

Похожие вопросы