Questions tagged «shell»

术语“外壳”是指通常与Unix和Linux操作系统相关联的一类基于文本的交互式命令解释器。对于有关shell脚本的问题,请使用更具体的标签,例如'bash','powershell'或'ksh'。没有特定标签的情况下,应该假定使用便携式(符合POSIX的)解决方案,尽管最好另外使用“ posix”或“ sh”。

7
正确的Bash和Shell脚本变量大写
我遇到了很多都带有大写字母的变量的shell脚本,而且我一直认为这有一个严重的误解。我的理解是,按照惯例(也许很久以前就有必要了),环境变量是大写的。 但是在像Bash这样的现代脚本环境中,我一直首选使用小写的名称表示临时变量,而使用大写的名称表示导出(即环境)变量。例如: #!/usr/bin/env bash year=`date +%Y` echo "It is $year." export JAVA_HOME="$HOME/java" 这一直是我对事情的看法。是否有任何权威人士同意或不同意这种方法,或者纯粹是风格问题?

11
Shell脚本“ for”循环语法
我已经完成以下工作: for i in {2..10} do echo "output: $i" done 它产生一束线output: 2,output: 3,等。 但是,尝试运行以下命令: max=10 for i in {2..$max} do echo "$i" done 产生以下内容: output: {2..10} 如何使编译器认识到应将$ max视为数组的另一端,而不是字符串的一部分?
190 unix  syntax  shell 

17
从命令行访问mysql远程数据库
我有一台带有Rackspace的服务器。我想从本地计算机命令行访问数据库。 我尝试像: mysql -u username -h my.application.com -ppassword 但是它给出了一个错误: 错误2003(HY000): 无法连接到“ my.application.com”上的MySQL服务器(10061) 是什么导致此错误,如何连接到远程数据库?

18
如何在变量中存储标准错误
假设我有一个类似以下的脚本: 无用的 echo "This Is Error" 1>&2 echo "This Is Output" 我还有另一个shell脚本: AlsoUseless.sh ./useless.sh | sed 's/Output/Useless/' 我想从useless.sh中捕获“ This Is Error”或任何其他stderr到变量中。我们称它为ERROR。 请注意,我正在使用stdout做某事。我想继续使用stdout,因此在这种情况下,将stderr重定向到stdout并没有帮助。 所以,基本上,我想做 ./useless.sh 2> $ERROR | ... 但这显然行不通。 我也知道我能做 ./useless.sh 2> /tmp/Error ERROR=`cat /tmp/Error` 但这是丑陋且不必要的。 不幸的是,如果没有答案,这就是我要做的。 我希望有另一种方式。 有人有更好的主意吗?




14
在Linux中找到-exec一个shell函数?
有没有办法find执行我在Shell中定义的功能?例如: dosomething () { echo "doing something with $1" } find . -exec dosomething {} \; 结果是: find: dosomething: No such file or directory 有没有办法让find的-exec看dosomething?
185 linux  bash  shell  find  bsd 

15
子流程命令的实时输出
我正在使用python脚本作为流体力学代码的驱动程序。是时候运行模拟了,我subprocess.Popen用来运行代码,将stdout和stderr的输出收集到subprocess.PIPE---中,然后我可以打印(并保存到日志文件中)输出信息,并检查是否有错误。问题是,我不知道代码是如何进行的。如果直接从命令行运行它,它会向我输出有关它的迭代时间,时间,下一时间步长等的信息。 有没有办法既存储输出(用于日志记录和错误检查),又产生实时流输出? 我的代码的相关部分: ret_val = subprocess.Popen( run_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) output, errors = ret_val.communicate() log_file.write(output) print output if( ret_val.returncode ): print "RUN failed\n\n%s\n\n" % (errors) success = False if( errors ): log_file.write("\n\n%s\n\n" % errors) 最初,我是run_command通过管道传递数据,tee以便将副本直接发送到日志文件,并且流仍直接输出到终端-但是那样,我无法存储任何错误(据我所知)。 编辑: 临时解决方案: ret_val = subprocess.Popen( run_command, stdout=log_file, stderr=subprocess.PIPE, shell=True ) while not ret_val.poll(): log_file.flush() …

5
如何杀死僵尸进程
我在前台启动了我的程序(守护程序),然后用杀死了该程序kill -9,但剩下一个僵尸,无法使用杀死它kill -9。如何杀死僵尸进程? 如果僵尸是一个死进程(已经被杀死),我如何将其从输出中删除ps aux? root@OpenWrt:~# anyprogramd & root@OpenWrt:~# ps aux | grep anyprogram 1163 root 2552 S anyprogramd 1167 root 2552 S anyprogramd 1169 root 2552 S anyprogramd 1170 root 2552 S anyprogramd 10101 root 944 S grep anyprogram root@OpenWrt:~# pidof anyprogramd 1170 1169 1167 1163 root@OpenWrt:~# kill -9 …


7
Shell脚本删除文件(如果已存在)
我正在做一些将数据存储在文件中的工作。但是,每次我运行脚本时,它都会附加到上一个文件中。 我需要有关如何删除该文件(如果已存在)的帮助。
183 shell 



6
在Bash中测试非零长度字符串:[-n“ $ var”]或[“ $ var”]
我已经看到Bash脚本以两种不同的方式测试非零长度的字符串。大多数脚本使用以下-n选项: #!/bin/bash # With the -n option if [ -n "$var" ]; then # Do something when var is non-zero length fi 但是实际上不需要-n选项: # Without the -n option if [ "$var" ]; then # Do something when var is non-zero length fi 哪个更好? 同样,这是测试零长度的更好方法: if [ -z "$var" ]; then …

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.