У меня есть сценарий удара Linux 'myshell'. Я хочу, чтобы это считало две даты как параметры, например: myshell date1 date2
. Я - программист Java, но не знаю, как записать сценарий, чтобы сделать это.
Остальная часть сценария похожа на это:
sed "s/$date1/$date2/g" wlacd_stat.xml >tmp.xml
mv tmp.xml wlacd_stat.xml
вы используете $ 1
, $ 2
в своем скрипте, например,
date1="$1"
date2="$2"
sed "s/$date1/$date2/g" wlacd_stat.xml >temp.xml ;mv temp.xml wlacd_stat.xml #Semicolon can also replaced with a newline
$ 0 $ 1 $ 2
И так далее будет содержать имя сценария, затем первая и вторая строки аргумент.
Чтобы перебрать параметры, вы можете использовать это сокращение:
#!/bin/bash
for a
do
echo $a
done
Эта форма такая же, как для a в "$ @"
.
Аргументы Bash названы в соответствии с их положением.
Более того, если вам нужно обрабатывать один аргумент за другим, вы можете сдвинуть их и всегда использовать $ 1
:
while [ $# -gt 0 ]
do
echo $1
shift
done