标签: sh

使用IF语句时,如何在多行上拆分shell命令?

当命令是if语句的一部分时,如何在shell中的多行上拆分命令?

这有效:

if ! fab --fabfile=.deploy/fabfile.py --forward-agent --disable-known-hosts deploy:$target; then rc=1                                                                       
fi
Run Code Online (Sandbox Code Playgroud)

这不起作用:

# does not work:
if ! fab --fabfile=.deploy/fabfile.py \ 
  --forward-agent \
  --disable-known-hosts deploy:$target; then   
  rc=1
fi
Run Code Online (Sandbox Code Playgroud)

而不是整个命令执行,我得到:

./script.sh: line 73: --forward-agent: command not found
Run Code Online (Sandbox Code Playgroud)

更重要的是,我对Bash的理解中缺少哪些内容可以帮助我理解未来的类似问题?

syntax sh

346
推荐指数
2
解决办法
36万
查看次数

如何在Mac上获取GNU的readlink -f的行为?

在Linux上,该readlink实用程序接受一个-f跟随其他链接的选项.这似乎不适用于Mac和可能基于BSD的系统.相当于什么?

这是一些调试信息:

$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]
Run Code Online (Sandbox Code Playgroud)

macos freebsd sh

341
推荐指数
13
解决办法
11万
查看次数

如何在sh中的字符串中添加换行符?

这个

STR="Hello\nWorld"
echo $STR
Run Code Online (Sandbox Code Playgroud)

产生输出

Hello\nWorld
Run Code Online (Sandbox Code Playgroud)

代替

Hello
World
Run Code Online (Sandbox Code Playgroud)

如何在字符串中添加换行符?

注意:这个问题不是关于回声. 我知道echo -e,但我正在寻找一种解决方案,允许将一个字符串(包括换行符)作为参数传递给其他命令,这些命令没有类似的选项来解释\n为换行符.

sh

303
推荐指数
7
解决办法
27万
查看次数

检查shell脚本中是否存在带通配符的文件

我正在尝试检查文件是否存在,但是使用通配符.这是我的例子:

if [ -f "xorg-x11-fonts*" ]; then
    printf "BLAH"
fi
Run Code Online (Sandbox Code Playgroud)

我也尝试过没有双引号.

shell wildcard sh

264
推荐指数
11
解决办法
30万
查看次数

如何在不使用"sh"或"bash"命令的情况下运行shell脚本?

我有一个shell脚本,我想运行而不使用"sh"或"bash"命令.例如:

代替: sh script.sh

我想用: script.sh

我怎样才能做到这一点?

PS(i)我不太使用shell脚本,我尝试阅读别名,但我不明白如何使用它们.

(ii)我还阅读了关于将脚本与PATH变量中的另一个文件相关联的内容.我正在使用我的大学服务器,但我没有权限在这些位置创建文件.

bash shell alias sh

246
推荐指数
6
解决办法
54万
查看次数

shell编程中$(command)和`command`有什么区别?

要将命令的输出存储为sh/ksh/bash中的变量,您可以执行任一操作

var=$(command)
Run Code Online (Sandbox Code Playgroud)

要么

var=`command`
Run Code Online (Sandbox Code Playgroud)

两种方法之间有什么区别?

bash shell ksh sh

241
推荐指数
5
解决办法
4万
查看次数

从UNIX shell脚本中的列表中选择唯一值或不同值

我有一个ksh脚本,它返回一长串值,换行符分隔,我想只看到唯一/不同的值.有可能这样做吗?

例如,假设我的输出是目录中的文件后缀:

tar
gz
java
gz
java
tar
class
class
Run Code Online (Sandbox Code Playgroud)

我希望看到如下列表:

tar
gz
java
class
Run Code Online (Sandbox Code Playgroud)

bash ksh unique distinct sh

224
推荐指数
6
解决办法
28万
查看次数

如何在docker容器中运行cron作业?

我试图在一个调用shell脚本的docker容器中运行一个cronjob.

昨天我一直在网上搜索和堆栈溢出,但我真的找不到一个有效的解决方案.
我怎样才能做到这一点?

编辑:

我创建了一个(注释的)github存储库,其中包含一个工作的docker cron容器,它以给定的时间间隔调用shell脚本.

cron containers sh docker

215
推荐指数
18
解决办法
22万
查看次数

Ubuntu说"bash:./ program Permission denied"

I am running Ubuntu on computer 1 and computer 2. I compiled a C++ program on computer 1, and I can execute it from the terminal using ./program_name. It runs fine.

However, when I try to do this on computer 2, it says: bash: ./program_name: permission denied

What's wrong and what can I do about it?

bash shell sh

177
推荐指数
3
解决办法
62万
查看次数

在bash heredoc中使用变量

我正在尝试在bash heredoc中插入变量:

var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
Run Code Online (Sandbox Code Playgroud)

这不符合我的预期(按$var字面意思处理,不进行扩展).

我需要使用,sudo tee因为创建文件需要sudo.做类似的事情:

sudo cat > /path/to/outfile <<EOT
my text...
EOT
Run Code Online (Sandbox Code Playgroud)

不起作用,因为>outfile在当前shell中打开文件,而不使用sudo.

variables bash heredoc sh

175
推荐指数
3
解决办法
10万
查看次数

标签 统计

sh ×10

bash ×5

shell ×4

ksh ×2

alias ×1

containers ×1

cron ×1

distinct ×1

docker ×1

freebsd ×1

heredoc ×1

macos ×1

syntax ×1

unique ×1

variables ×1

wildcard ×1