Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

2
bash和zsh中&& vs&的优先级
回答这个问题,我发现行为之间一个非常有趣的(和微妙的)差别bash和zsh: 在bash: romano@RRyS:~$ pwd /home/romano romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &" romano@RRyS:~$ x [1] 16611 romano@RRyS:~$ pwd /home/romano 如您所见,别名的执行x是在子外壳中进行的,因此当前目录不会更改。 不在zsh: [romano:~] % pwd /home/romano [romano:~] % alias x="cd /bin && ./echo A >/dev/null &" [romano:~] % x [1] 16744 [1] + 16744 done ./echo A >/dev/null 1& …
9 bash  shell  zsh 

4
意外的EOF和语法错误
我目前正在编写我的第三个Shell脚本,但遇到了问题。到目前为止,这是我的脚本: #!/bin/bash echo "choose one of the following options : \ 1) display all current users \ 2) list all files \ 3) show calendar \ 4) exit script" while read do case in 1) who;; 2) ls -a;; 3) cal;; 4) exit;; esac done 当我尝试运行脚本时,它说: line2 : unexpected EOF …

2
是否可以在CLI中直接使用shell参数变量($ 1,…,$ @)?
有时有必要在小示例中模拟并验证上述变量,然后可以将其立即复制到某些脚本等中。 我尝试通过以下方式使用一个简单的示例来解决: (find $1) /tmp sh -c '(find $1) /tmp' sh -c "find $1" /tmp echo '(find $1) /tmp' | sh 以及其他组合。还通过添加shebang解释器指令进行了实验#!/bin/sh -x,但未获得期望的结果。 我可以简单地做到这一点吗?

3
在Bash中动态修剪stdout线宽
最近,我一直在试验该ps命令,有时长路径会绕到下一行(或两行)并使其难以阅读。我想将ps输出传递到另一个程序中,以将输出限制x为字符数。 这是我到目前为止所拥有的,但是它并不正确: ps aux | cut -c1-$(stty size | cut -d' ' -f2) $(stty size | cut -d' ' -f2)计算结果为167,但似乎不是有效的输入cut。 有没有一种方法可以使这种语法在bash中工作?
9 bash  shell  stdout  cut 

4
如何从管道读取用户输入?
假设我有一个文件confirmation.sh,其内容如下: #!/bin/bash echo -n "Are you sure [Y/n]? " read line case "$line" in n|N) echo "smth" ;; y|Y) echo "smth" ;; esac 并且我想通过以下方式运行此脚本: cat confirmation.sh | sh 我看到Are you sure [Y/n]?了,脚本被打断了。有什么问题?

1
bash shell不警告您算术溢出等原因是什么?
bashShell 的算术评估功能设置了限制。该手册简要介绍了Shell算术的这一方面,但指出: 评估以固定宽度的整数完成,不检查溢出,尽管陷阱会被除以0并标记为错误。运算符及其优先级,关联性和值与C语言相同。 它所指的是哪个固定宽度整数,实际上是关于所使用的数据类型(以及为何超出此范围的详细信息),但是极限值是以/usr/include/limits.h这种方式表示的: # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # ifdef __USE_ISOC99 # define LLONG_MAX 9223372036854775807LL # define ULLONG_MAX 18446744073709551615ULL 一旦知道了,就可以像下面这样确认事实: # getconf -a | grep 'long' LONG_BIT 64 ULONG_MAX 18446744073709551615 这是一个64位整数,在算术评估的上下文中直接在shell中转换: # echo $(((2**63)-1)); echo $((2**63)); echo $(((2**63)+1)); echo $((2**64)) 9223372036854775807 //the practical usable limit …

2
如果进程在一段时间内保持安静,则将其杀死
我有一个实用程序,它有一个安静的习惯,那就是安静下来并呆在那里,我已经知道它要花多长时间来完成这项工作,所以我timeout经常在与之抗争,但是有时它在那之前就做了。timeout如果停止将输出定向到stdout,是否有类似的工具可以终止该进程?
9 linux  bash  shell  stdout  timeout 



5
如何在后台启动程序
程序Boblight不在后台运行。执行之间没有明显的区别 sudo boblightd 和 sudo boblightd& 如何解决控制台不会阻止其他输入的问题? pi@raspberrypi ~/boblight/boblightd-for-raspberry-master $ sudo boblightd Boblightd 2.0 (optimized version for raspberry) (c) 2013 Speedy1985 and Heven) (InitLog) start of log /root/.boblight/boblightd.log (PrintFlags) starting boblightd (CConfig::LoadConfigFromFile) opening /etc/boblight.conf (CConfig::CheckConfig) checking config lines (CConfig::CheckConfig) config lines valid (CConfig::BuildConfig) building config (CConfig::BuildConfig) built config successfully (main) …

1
如何使用cat将变量回显到文件中?
我有这样的简单脚本: #!/bin/bash BOO=bla-bla-bla cat > ./Makefile <<'EOF' Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include EOF 但是它输出到文件中: Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include 如何cat使用我的变量值,而不是该字符串中的名称?




3
case +如何在大小写语法中实现等于或小于或等于
我的目标是使用(仅使用case+ esac)验证数字范围,然后打印该范围。因此,例如: 如果数字介于0到80之间,请打印 >=0<=80 如果数字介于81到100之间,则打印 >=81<=100 等等 >=0<=90仅当数字介于0和9之间时,下面的脚本问题才会打印。如何修复脚本,以便根据数字范围打印正确的输出? #!/bin/ksh read number case $number in [0-80]) echo ">=0<=80";; [81-100]) echo ">=81<=100";; [101-120]) echo ">=101<=120";; [121-300]) echo ">=121<=300";; esac

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.