标签: bash

在bash中,如何检查字符串是否以某个值开头?

我想检查字符串是否以"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)

怎么做正确?

string bash comparison

677
推荐指数
12
解决办法
57万
查看次数

如何从另一个shell脚本调用shell脚本?

我有两个shell脚本,a.shb.sh.

如何b.sh从shell脚本中调用a.sh

bash shell

669
推荐指数
15
解决办法
90万
查看次数

检查传递给Bash脚本的参数数量

如果不满足所需的参数计数,我希望我的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 parameter-passing command-line-arguments

663
推荐指数
6
解决办法
71万
查看次数

Bash脚本获取自身完整路径的可靠方法

我有一个Bash脚本需要知道它的完整路径.我试图找到一种广泛兼容的方式来做到这一点,而不会结束相对或时髦的路径.我只需要支持Bash,而不是sh,csh等.

到目前为止我发现了什么:

  1. 地址中获取Bash脚本的源目录的接受答案是获取脚本的路径dirname $0,这很好,但可能会返回相对路径(如.),如果要更改目录中的目录,这是一个问题脚本并使路径仍指向脚本的目录.不过,dirname将成为这个难题的一部分.

  2. OS X的Bash脚本绝对路径 的接受答案(特定于OS X,但答案无论如何)都会给出一个函数,该函数将测试是否$0看起来相对,如果是,则会预先挂起$PWD.但是结果仍然可以包含相对位(虽然总体来说它是绝对的) - 例如,如果脚本t在目录中/usr/bin并且你进入/usr并且你输入bin/../bin/t它来运行它(是的,那是复杂的),你最终会得到/usr/bin/../binas脚本的目录路径.哪个有效,但......

  3. 此页面上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的系统进行检查).

所以,各种方式,但他们都有他们的警告.

什么是更好的方式?"更好"的意思是:

  • 给了我绝对的道路.
  • 即使以复杂的方式调用,也可以获得时髦的位(参见上面#2的评论).(例如,至少要对路径进行适度规范化.)
  • 仅依赖于Bash-isms或几乎肯定会出现在最流行的*nix系统(GNU/Linux,BSD和类似BSD的系统,如OS X等)上的东西.
  • 如果可能,避免调用外部程序(例如,更喜欢Bash内置程序). …

bash path

653
推荐指数
12
解决办法
42万
查看次数

如何从项目中删除所有.pyc文件?

我已经在一个相当大的项目中重命名了一些文件,并希望删除他们留下的.pyc文件.我尝试了bash脚本:

 rm -r *.pyc
Run Code Online (Sandbox Code Playgroud)

但是这并没有像我想象的那样通过文件夹递归.我究竟做错了什么?

bash

652
推荐指数
14
解决办法
28万
查看次数

如何使用awk或sed进行递归查找/替换字符串?

如何找到并替换每次出现的事件:

subdomainA.example.com
Run Code Online (Sandbox Code Playgroud)

subdomainB.example.com
Run Code Online (Sandbox Code Playgroud)

/home/www/目录树下的每个文本文件递归?

bash awk replace sed

642
推荐指数
20
解决办法
49万
查看次数

在继续之前,如何暂停我的shell脚本一秒钟?

我只找到了如何等待用户输入.但是,我只想暂停,以免while true我的计算机崩溃.

我试过了pause(1),但它说-bash: syntax error near unexpected token '1'.怎么做到呢?

unix bash shell terminal

642
推荐指数
8
解决办法
81万
查看次数

在Bash脚本中,如果出现某种情况,如何退出整个脚本?

我正在用Bash编写一个脚本来测试一些代码.但是,如果首先编译代码失败,运行测试似乎很愚蠢,在这种情况下,我只是中止测试.

有没有办法可以在没有将整个脚本包含在while循环中并使用中断的情况下执行此操作?有点像dun dun dun goto?

bash scripting exit-code exit

641
推荐指数
6
解决办法
60万
查看次数

如何使用双括号或单括号,括号,花括号

我对Bash中括号,括号,花括号的用法以及它们的双重或单一形式之间的区别感到困惑.有明确的解释吗?

syntax bash

637
推荐指数
6
解决办法
34万
查看次数

在Bash中重定向stderr和stdout

我想将进程的stdout和stderr重定向到单个文件.我怎么用Bash做到这一点?

bash shell redirect pipe

635
推荐指数
10
解决办法
66万
查看次数