Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

2
创建字符串时将执行字符串中的Bash命令,而不是稍后使用时
我对shell脚本比较陌生,但是几乎完成了一个使用lftp程序的脚本。我遇到问题的脚本部分是当我创建一长串命令(以分隔;)时。 for var in something do ... commands_to_run+="echo Result is `tail -n 1 $somefile`;" done 我注意到的是,tail包裹在反引号中的程序在for循环迭代时正在运行,但是稍后在脚本中调用命令字符串时却不在运行。 不幸的是,$ somefile的内容目前还无法检查。如何在需要时(而不是在创建字符串时)执行命令?

2
一次缓存所有gpg子项密码?防止需要输入多个gpg密码?
我可以只输入一次gpg密码并解锁所有子密钥(签名,解密,身份验证)吗? 目前,我需要输入3次gpg密码(用于签名,解密和身份验证)。这很不方便。 我试图提出一个shell脚本。 #!/bin/bash set -x set -e set +o history signing_key=77BB3C48 encryption_key=CE998547 tempfile="$(mktemp)" echo "test" > testfile unset passphrase || exit 1 read -sp 'Enter password. ' passphrase ; echo exec 3<<<"$passphrase" gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile" gpg2 --no-tty --use-agent --verify "$tempfile.asc" gpg2 …

2
zsh中的局部变量:zsh中bash的“ export -n”等效项是什么
我正在尝试在zsh中将变量的范围包含到shell中,而没有孩子看到它。例如,我在.zshrc中键入: GREP_OPTIONS=--color=always 但是,如果我使用以下命令运行shell脚本: #!/bin/bash echo $GREP_OPTIONS 输出为: --color=always 虽然我希望它为null(上面的shell脚本根本不应该看到GREP_OPTIONS变量)。 用bash可以说:export -n GREP_OPTIONS=--color=always,这可以防止这种情况的发生。如何在zsh中完成此操作?


4
从bash函数返回值
我有一个函数,如果数字是有效的十位数,则返回1: valNum() { flag=1 if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then echo "Invalid Number" flag=0 fi return $flag } 它被称为: if [[ $(valNum $num) -eq 1 ]]; then #do something fi 如果该数字有效,则该功能运行正常,但如果输入无效数字,则显示语法错误。

3
将SQL查询的输出分配给变量
我正在连接到oracle数据库并触发查询并将输出分配给变量,但是当我回显该变量的值时,它将无法正确打印。 count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END set pagesize 0 feedback off verify off heading off echo off; select max(cust_id) from cutomers exit; END` echo $count 在数据库上触发查询返回正确的结果。但是“ count”变量的值不正确。

5
如何根据星期几使用If-Else查询?
问题:我需要检查今天是否是星期四,并根据这种情况的结果执行不同的操作。我尝试了两种不同的方法: 获取日期名称: DAYOFWEEK=$(date +"%a") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == "Thu"]; then echo YES else echo NO fi 获取日数: DAYOFWEEK=$(date +"%u") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == 4]; then echo YES else echo NO fi 在这两种情况下,即使应为“是”,输出也为“否”。怎么了?

2
比较时间的好方法?
我需要检查当前时间,如果不是我应该运行它的一天中的适当时间,则中止脚本。另外,如果其他任何人运行它,它都应该中止。 例如:我需要脚本仅在10 PM到2 AM(4小时窗口)之间启动时才能运行。 目前,我正在执行以下操作。花时间date +%k%M与硬编码进行比较 #!/bin/sh currTime=`date +%k%M` check_time_to_run() { tempTime=$1 if [ $tempTime -gt 200 -a $tempTime -lt 2200 ]; then echo "Time is between 2 AM and 10 PM. Aborting." exit 1 else echo "Time is after 10 PM and before 2 AM. Running normally." fi } …

1
查找目录中具有相同内容的所有文件夹
在Ubuntu中,是否可以在目录中查找重复的文件夹(即具有相同内容的文件夹)?我认为已经有一些命令行工具可用于查找重复文件(例如fdupes),但是我想查找重复文件夹。即,找到在其包含的文件内容方面匹配的文件夹(尽管文件名和其他元数据可能有所不同)。

3
shell脚本仍然可以在没有#的情况下工作!(sha-bang行)
我是shell脚本的新手,很多书都写过在脚本开始时使用#!(sha-bang)行来调用解释器,这将为脚本调用新的shell并逐行进行解释。我的基本脚本仍然没有魔术般运行。 所以我的问题是: 我的基本脚本是从哪里得到解释器的。 脚本如何设法找到解释器。 现在,让我告诉您我的基本脚本,它仅包含以下行: 回声“没有魔力的基本剧本”

3
我如何设置一个脚本,它将在FreeBSD中启动时运行?
我正在使用FreeBSD 9,我想编写一个脚本来检查是否连接了以太网电缆,如果连接了以太网电缆,请检查它。我想设置它以便它在计算机启动或登录时都可以运行。我看了我的UNIX书籍(它已经过时了,并且适用于一般UNIX,而不是专门针对FreeBSD),它说我可以使用crontab,但我只能这样做以使事情在某些时间运行,而不是在启动时运行。有人可以告诉我如何做到这一点吗?

5
如何只为bash脚本着色一些关键字?
我正在运行一些单元测试代码。单元测试代码输出常规文本。文本很多,因此我想为用户突出显示重要的关键字。 在这种情况下,关键字为“通过”和“失败”。 您如何将“通过”着色为绿色,将“失败”着色为红色?

3
从bash脚本自动化文本输入而无需使用EOF
我正在运行Ubuntu Linux。假设有一个名为的程序myprogram。该程序提示用户输入;特别是,用户必须在出现提示时键入一个整数,然后按Enter。我想使用bash脚本自动执行此过程。特别是,我想执行myprogram100次(使用i从1到的计数器100)。在每次执行时myprogram,我想i在出现提示时输入的当前值。 (顺便说一句,使用myprogramoptions / switches -options,它们都是常量,因此在bash脚本中指定。) 此bash脚本的不完整骨架可能是: #!/bin/bash for i in {1..100} do myprogram -options done 现在,我想修改上面的代码,以便i在程序提示时输入的当前值。做这个的最好方式是什么? 我正在使用的软件的网站建议<<EOF在行尾使用myprogram -options。我认为这告诉bash查看输入的“文件结尾”。但是,如果我不想要的东西放置在输入的结束文件?如果要在<<或之后立即放置<怎么办? 原因是事情会变得更加复杂。例如,我可能会引入一个j以某种非线性,非顺序方式改变的整数计数器。然后,我想在每次迭代中提供jto 的当前值myprogram,但是to 的值j可能在to的调用myprogram -options与文件的结尾之间变化EOF。 你有什么建议吗?

4
在命令行中从尾部执行文本的最简单方法是什么?
有时我正在使用新的(ubuntu)框,然后键入git并收到警告: The program 'git' is currently not installed. You can install it by typing: apt-get install git-core 如果发生这种情况,我知道我可以通过执行以下操作来抓住最后一行: !! 2>&1 | tail -n 1 但是,如何apt-get install git-core最轻松地执行()结果? 我知道我能做 `!! 2>&1 | tail -n 1` 但是还有一种方法可以实际通过管道传输并运行它吗?这似乎不起作用: !! 2>&1 | tail -n 1 | sh 而且该2>&1部分有点麻烦,所以我想知道是否还有一种更简单的方法可以实现这一目标。 编辑 将其以某种方式保存到变量,然后执行该变量也是可以接受的: !! 2>&1 | tail …


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.