我无法弄清楚如何确保传递给我的脚本的参数是否为数字.
我想做的就是这样:
test *isnumber* $1 && VAR=$1 || echo "need a number"
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
我想设计一个shell脚本作为几个脚本的包装器.我想指定myshell.sh使用getopts的参数,并以相同的顺序将其余参数传递给指定的脚本.
如果myshell.sh执行如下:
myshell.sh -h hostname -s test.sh -d waittime param1 param2 param3
myshell.sh param1 param2 -h hostname param3 -d waittime -s test.sh
myshell.sh param1 -h hostname -d waittime -s test.sh param2 param3
Run Code Online (Sandbox Code Playgroud)
所有上述内容都应该可以作为
test.sh param1 param2 param3
Run Code Online (Sandbox Code Playgroud)
是否可以利用选项参数 myshell.sh 并将剩余参数发布到底层脚本?
我写了一个bash脚本,它通过用户输入获取计算数字.我遇到的问题是如果用户错误地输入了字母或空格,整个脚本都会失败,用户必须重新开始.
必须有一种简单的方法来检查输入是否只是数字,如果意外输入任何其他内容,将再次请求输入?
我想在两个值之间插入数字,否则重复脚本直到正确的数字.
这是我的脚本,它无法正常工作:
validation(){
read number
if [ $number -ge 2 && $number -ls 5 ]; then
echo "valid number"
break
else
echo "not valid number, try again"
fi
}
echo "insert number"
validation
echo "your number is" $number
Run Code Online (Sandbox Code Playgroud) 我试图了解“整理符号”匹配的工作原理,但我没有弄明白。我明白这意味着匹配一个精确的序列,而不仅仅是字符,即:
echo "ciiiao" | grep '[oa]' --> output 'ciiiao'
echo "ciiiao" | grep '[[.oa.]]' --> no output
echo "ciiiao" | grep '[[.ia.]]' --> output 'ciiiao'
Run Code Online (Sandbox Code Playgroud)
但是,第三个命令不起作用。我错了还是我误解了什么?
我已经阅读了这个正则表达式教程。
我似乎无法弄清楚如何在if语句中正确编写正则表达式.我希望它打印出所有带有"结束日期"的行.
NUMBERS包含一个包含以下内容的文本文件:
End Date ABC ABC ABC ABC ABC ABC
05/15/13 2 7 1 1 4 5
04/16/13 4 3 0 1 3 6
03/17/13 6 9 3 8 5 9
02/18/13 8 2 7 1 0 1
01/19/13 1 9 2 2 5 2
12/20/12 7 2 7 1 0 1
Run Code Online (Sandbox Code Playgroud)
以下是我的代码片段,我遇到了以下问题:
if [ -f $NUMBERS ]
then
while read line
do
if [ $line = ^End ]
then
echo "$line"
else
echo "BROKEN!"
break
fi
done …Run Code Online (Sandbox Code Playgroud) 您好我有这个简单的comparisson运营商来说,是否number是(包括1和3太)1和3之间,但如果我assingnumber到3,2它仍然接受是正确的。它应该只接受这些值1-2-3
我的代码
if (("$number" >= 1 && "$number" <= 3)); then
echo 'Correct number'
fi
Run Code Online (Sandbox Code Playgroud) bash ×7
shell ×4
regex ×2
if-statement ×1
integer ×1
linux ×1
parameters ×1
sh ×1
testing ×1
variables ×1