我想检查字符串是否以"node"开头,例如"node001".就像是
if [ $HOST == user* ]
then
echo yes
fi
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能正确?
我还需要组合表达式来检查HOST是"user1"还是以"node"开头
if [ [[ $HOST == user1 ]] -o [[ $HOST == node* ]] ];
then
echo yes
fi
> > > -bash: [: too many arguments
Run Code Online (Sandbox Code Playgroud)
怎么做正确?
我有两个shell脚本,a.sh和b.sh.
如何b.sh从shell脚本中调用a.sh?
如果不满足所需的参数计数,我希望我的Bash脚本能够打印错误消息.
我尝试了以下代码:
#!/bin/bash
echo Script name: $0
echo $# arguments
if [$# -ne 1];
then echo "illegal number of parameters"
fi
Run Code Online (Sandbox Code Playgroud)
由于某些未知原因,我遇到以下错误:
test: line 4: [2: command not found
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一个Bash脚本需要知道它的完整路径.我试图找到一种广泛兼容的方式来做到这一点,而不会结束相对或时髦的路径.我只需要支持Bash,而不是sh,csh等.
到目前为止我发现了什么:
从地址中获取Bash脚本的源目录的接受答案是获取脚本的路径dirname $0,这很好,但可能会返回相对路径(如.),如果要更改目录中的目录,这是一个问题脚本并使路径仍指向脚本的目录.不过,dirname将成为这个难题的一部分.
对OS X的Bash脚本绝对路径 的接受答案(特定于OS X,但答案无论如何)都会给出一个函数,该函数将测试是否$0看起来相对,如果是,则会预先挂起$PWD.但是结果仍然可以包含相对位(虽然总体来说它是绝对的) - 例如,如果脚本t在目录中/usr/bin并且你进入/usr并且你输入bin/../bin/t它来运行它(是的,那是复杂的),你最终会得到/usr/bin/../binas脚本的目录路径.哪个有效,但......
此页面上的readlink解决方案如下所示:
# Absolute path to this script. /home/user/bin/foo.sh
SCRIPT=$(readlink -f $0)
# Absolute path this script is in. /home/user/bin
SCRIPTPATH=`dirname $SCRIPT`
Run Code Online (Sandbox Code Playgroud)
但是readlink不是POSIX,显然解决方案依赖于GNU readlink,其中BSD由于某种原因无法工作(我无法访问类似BSD的系统进行检查).
所以,各种方式,但他们都有他们的警告.
什么是更好的方式?"更好"的意思是:
我已经在一个相当大的项目中重命名了一些文件,并希望删除他们留下的.pyc文件.我尝试了bash脚本:
rm -r *.pyc
Run Code Online (Sandbox Code Playgroud)
但是这并没有像我想象的那样通过文件夹递归.我究竟做错了什么?
如何找到并替换每次出现的事件:
subdomainA.example.com
Run Code Online (Sandbox Code Playgroud)
同
subdomainB.example.com
Run Code Online (Sandbox Code Playgroud)
在/home/www/目录树下的每个文本文件递归?
我只找到了如何等待用户输入.但是,我只想暂停,以免while true我的计算机崩溃.
我试过了pause(1),但它说-bash: syntax error near unexpected token '1'.怎么做到呢?
我正在用Bash编写一个脚本来测试一些代码.但是,如果首先编译代码失败,运行测试似乎很愚蠢,在这种情况下,我只是中止测试.
有没有办法可以在没有将整个脚本包含在while循环中并使用中断的情况下执行此操作?有点像dun dun dun goto?
我对Bash中括号,括号,花括号的用法以及它们的双重或单一形式之间的区别感到困惑.有明确的解释吗?
我想将进程的stdout和stderr重定向到单个文件.我怎么用Bash做到这一点?