У меня есть сценарий, который принимает один аргумент ($ 1). Поэтому я запускаю его так: bash script.sh file1.txt. Но когда я хочу заменить больше файлов (bash script.sh *), тогда он берет только один файл из всех. Как я могу заставить его работать? Должен ли быть другой скрипт, который заменяет все файлы из папки как $ 1 на script.sh или есть ли более простой способ?(Bash) Как заменить много файлов на скрипт?
#!/bin/bash
sed -i '/^$/d' [email protected]
declare -a command
while read -r line
do
[[ "$line" =~ ^secretcommand$ ]] || continue
read -r cmd || break
eval "$cmd"
break
done<"[email protected]"
Это не работает с «$ @».
Вы можете мне помочь?
Использует ли '' $ @ "' в вашем скрипте выполнение того, что вы хотите? –
Возможный дубликат [Как перебирать аргументы в сценарии Bash] (http://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script) – SLePort
Вы также можете используйте 'shift'. Если ваши аргументы A B C, то $ 1 - «A», $ 2 - «B» и т. Д. После выполнения смены «A» исчезнет, $ 1 будет «B» и так далее. – linuxfan