要执行一个任务,我需要按照精确的顺序创建两个触摸命令: touch aaaa-ref-bbb.done touch cccc-grp-dddd。完成创建一个脚本,以正确的顺序创建两个触摸命令总是
beinng aaaa .. dddd任何类型的字符串。第一个字符串包含“-ref-”,第二个字符串包含“-done-”
我想制作一个应用两个触摸命令的脚本,与参数传递的顺序无关。
例如(以错误的顺序参数)
./script.sh BLA-GRP-BLA的Bleh-REF-的Bleh
将产生
触摸的Bleh-REF-的输出bleh touch bla-grp-bla
如果以正确的顺序写入参数,触摸命令将按照正确的顺序写入。
我已经做了几次尝试,每次更改都更接近目标,但现在我卡住了。 你能帮忙吗?
#### tool for touch debug mode (set -x/set +x)
#!/bin/bash
#
#### USAGE
##### Constants
#start debug code
exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
FIRSTPARAM=$1
SECONDPARAM=$2
echo $FIRSTPARAM
echo $SECONDPARAM
dotouch()
{
if [[ "$FIRSTPARAM" =~ 'ref' ]]; then
echo 'correct order, processing...'
sleep 3
firsttouch = $FIRSTPARAM'.done'
secondtouch = $SECONDPARAM'.done'
echo $firsttouch
touch $firsttouch
sleep 1
touch $secondtouch
echo "touch was" $1 $2
else
secondtouch = $FIRSTPARAM'.done'
firstouch = $SECONDPARAM'.done'
touch $firsttouch
sleep 1
touch $secondtouch
echo "touch was" $2 $1
fi
}
if [ "$FIRSTPARAM" =~ "ref" ] || [ "$FIRSTPARAM" =~ "grp" ]; then
dotouch()
echo "touch commands executed"
exit 0
else
echo "Usage: $0 [xxxx_ref_xxxx.tar] [xxxx_grp_yyyy.tar] "
exit 1
fi
exit 0
#end debug code
set +x
您能否再次阅读您的问题并修复错误?例如:在第一句中给出文件名的例子,在第二句中,你声明一个字符串包含'-ref-',这是真实的,但你也声明另一个包含'-done-',这是不正确的。然后,你的脚本使用明显错误的变量名(参见asalamon74的答案)。请帮助我们帮助你。 –
我已经修复了许多错误,如我所发现的。感谢您的提醒。 – user1006082
你的两个第一个例子字符串仍然不包含'-done -'子字符串。 –