Tag: 庆典

如何使用su来执行该用户的其余bash脚本?

我写了一个脚本,它将一个string作为一个参数,这个string是一个用户名和一个项目的连接。 该脚本应该切换(su)到用户名,cd到基于项目string的特定目录。 我基本上想这样做: su $USERNAME; cd /home/$USERNAME/$PROJECT; svn update; 问题是,一旦我做了一个su …它只是在那里等着。 自从执行stream程转换到用户以来,这是有道理的。 一旦我退出,其余的事情就会执行,但不能按需要工作。 我在svn命令前加了su,但命令失败了(也就是没有更新所需目录中的svn)。 如何编写一个脚本,允许用户切换用户并调用svn(等等)?

如何将shell命令应用到命令输出的每一行?

假设我有一些命令的输出(如ls -1 ): a b c d e … 我想依次对每一个应用一个命令(比如echo )。 例如 echo a echo b echo c echo d echo e … 在bash中最简单的方法是什么?

Bash命令来总结一列数字

我想要一个bash命令,我可以pipe入这将总结一列数字。 我只是想要一个快速的class轮,将做一些基本上这样的事情: cat FileWithColumnOfNumbers.txt | sum

如何提示用户在bash脚本中进行确认?

我想快点“你确定吗?” 提示在有潜在危险的bash脚本的顶部进行确认,最简单/最好的方法是什么?

Tilde扩大报价

我写了一个脚本,其中必须在用户定义的目录中find可能包含代字号的文件。 构造看起来像 found_files=$(find "$user_defined_directory" -type f … ) 我使用引号来覆盖该path中的可能空格,但根据手册页,代字符扩展不适用于引号。 我知道:操作符可能可以做这个扩展,但我不知道如何在这里使用它。 'user-defined-directory'从用户$ HOME目录中的另一个configuration文件中获取。 它不是作为parameter passing给我的脚本,而是从我编写的脚本中的另一个configuration中parsing出来的。

Bash检查显示文件是否存在不存在的文件?

在bash中运行以下内容: stuff=`rpm -ql <some package> | grep dasdasdfd` (不存在的文件包,退出码= 1,标准输出为空) if [ -f $stuff ]; then echo "whaaat"; fi 上面的命令检查文件是否存在…但是: file $stuff 只需打印文件…的使用信息 stat $stuff 缺less操作数… 有人可以解释为什么吗? 这是一个错误? 我做错了什么? 我只想确保包中的文件存在于fs中

bash脚本怎样才能使Ctrl-C等同于后台任务?

有没有办法调用一个subprocess,以便它和它的所有后代发送一个中断,就像Ctrl-C是一个前台任务一样? 我试图杀死一个启动脚本,调用一个长期运行的孩子。 我已经试过kill -SIGINT $child (它不会将中断发送给它的后代,所以是一个no-op)并kill -SIGINT -$child (交互式调用时工作,但不在脚本中运行时)。 这是一个testing脚本。 长时间运行的脚本是test.sh –child 。 当你调用test.sh –parent ,它调用test.sh –child &然后试图杀死它。 我怎样才能使父母成功地杀死孩子? #!/bin/bash if [ "$1" = "–child" ]; then sleep 1000 elif [ "$1" = "–parent" ]; then "$0" –child & for child in $(jobs -p); do echo kill -SIGINT "-$child" && kill -SIGINT "-$child" done wait […]

循环外部的shellvariables设置在其外部

我正在试图find其中最多的字符的path名。 可能有更好的方法来做到这一点。 但是我想知道为什么会出现这个问题。 LONGEST_CNT=0 find samples/ | while read line do line_length=$(echo $line | wc -m) if [[ $line_length -gt $LONGEST_CNT ]] then LONGEST_CNT=$line_length LONGEST_STR=$line fi done echo $LONGEST_CNT : $LONGEST_STR 它不知何故总是返回: 0 : 如果我在while循环中打印debugging结果,那么值是正确的。 那么为什么bash不会使这些variables成为全局的呢?

如何在同一行显示和更新回显

我有以下在Bash(在Linux中) for dir in Movies/* do (cd "$dir" && pwd|cut -d \/ -f5|tr -s '\n' ', ' >> ../../movielist && exiftool * -t -s3 -ImageSize -FileType|tr -s '\t' ',' >> ../../movielist ) echo "Movie $movies – $dir ADDED!" let movies=movies+1 done 但我希望这样做,“回声”在下一行显示下面的回声(不是与最后的回声输出连接,而是replace它),以使它看起来像它正在更新。 类似于百分比的进度条如何显示在同一行上。

Bash:如何在引用中保留引号?

我有一个Bash脚本,我想在传递的参数中保留引号。 例: ./test.sh this is "some test" 那么我想使用这些参数,并重新使用它们,包括整个参数列表中的引号和引号。 我尝试使用\"$@\" ,但删除列表中的引号。 我如何做到这一点?