Articles of shell

我的shell脚本执行后停止

我正在写一个如下所示的shell脚本: for i in $ACTIONS_DIR/* do if [ -x $i ]; then exec $i nap fi done 现在,我想要实现的是列出$ ACTIONS_DIR中的每个文件,以便能够执行它。 $ ACTIONS_DIR下的每个文件是另一个shell脚本。 现在,这里的问题是,在使用exec之后,脚本停止,并且不会直接进入下一个文件。 任何想法为什么这可能是?

“./somescript.sh”和“”之间的区别是什么? ./somescript.sh”

今天我按照一些说明在Linux中安装一个软件。 有一个脚本需要先运行。 它设置了一些环境variables。 该指示告诉我执行. ./setup.sh . ./setup.sh ,但我通过执行./setup.sh犯了一个错误。 所以env没有设置。 最后我注意到这一点,并继续。 我想知道这两种调用脚本方法的区别。 我对Linux是全新的,所以请尽可能详尽。

为什么不“sortingfile1> file1”工作?

当我想sorting文件,并保存sorting的输出本身,就像这样 sort file1 > file1; file1的内容完全被擦除,而当我试图像这样做“tee”命令 sort file1 | tee file1; 它工作得很好[编辑:“工作正常”,只有对于有幸运的时间的小文件,会导致大数据丢失或无用的进程调度] ,即它覆盖文件1的sorting输出本身,并显示在标准输出。 有人可以解释为什么第一个案件不工作?

在意外标记附近的语法错误'然后'

我input的代码与“Linux命令行:完整简介” (第369页)相同,但提示错误: line 7 `if[ -e "$FILE" ]; then` 代码是这样的: #!/bin/bash #test file exists FILE="1" if[ -e "$FILE" ]; then if[ -f "$FILE" ]; then echo :"$FILE is a regular file" fi if[ -d "$FILE" ]; then echo "$FILE is a directory" fi else echo "$FILE does not exit" exit 1 fi exit 我想知道是什么引入了错误? 我如何修改代码? […]

编写一个bash shell脚本,为用户定义的时间消耗一定量的RAM

我正在尝试编写一个bash shell脚本,在embedded式设备上为用户定义的时间消耗大量的RAM。 我怎么做,而不使用数组?

awk – 如何删除字段分隔符的第一列

我有一个csv文件,其数据如下所示 87540221|1356438283301|1356438284971|1356438292151697 87540258|1356438283301|1356438284971|1356438292151697 87549647|1356438283301|1356438284971|1356438292151697 我试图将第一列保存到一个新的文件(没有字段分隔符,然后从主csv文件中删除第一列以及第一个字段分隔符。 有任何想法吗? 这是我迄今为止所尝试过的 awk 'BEGIN{FS=OFS="|"}{$1="";sub("|,"")}1' 但它不起作用

SUID不能使用shell脚本

我创build了一个包含以下内容的小型shell脚本: cat /usr/bin/checksuid.sh !/bin/bash echo "Hello" > /etc/myfile.cnf ls -l /usr/bin/checksuid.sh -rwsr-xr-x 1 root root 56 Sep 9 12:56 /usr/bin/checksuid.sh 我也用root帐户创build了一个/etc/myfile.cnf文件,设置权限如下: -rw-r–r– 1 root root 6 Sep 9 12:26 /etc/myfile.cnf 当我从非root帐户执行/usr/bin/checksuid.sh ,出现以下错误: /usr/bin/checksuid.sh: line 3: /etc/myfile.cnf: Permission denied 有人可以帮助你,为什么SUID不工作?

先从命令行调用一个python脚本,而不要先input“python”

问题:在命令行中,如何在不必在脚本名称前键入python情况下调用python脚本? 这甚至有可能吗? 信息: 我写了一个用于从命令行访问sqlite数据库的方便脚本,但我不喜欢键入“python SQLsap args”,而只是键入“SQLsap args”。 我不知道这是否可能,但是知道这是否是好事。 不仅仅是这个程序。

获取shell脚本中的函数名称列表

我有一个Bourne Shell脚本,它有几个函数,并允许以下面的方式调用: my.sh <func_name> <param1> <param2> 里面的func_name()将被调用param1和param2。 我想创build一个“帮助”function,只列出所有可用的function,即使没有参数。 问题:如何从脚本中获取脚本中所有函数名称的列表? 我想避免parsing它并寻找函数模式。 太容易出错。 谢谢,Alex 更新:代码。 想要我的help()函数像main() – 添加到代码中的函数会自动添加到帮助中。 #!/bin/sh # must work with "set -e" foo () { echo foo: -$1-$2-$3- return 0 } # only runs if there are parameters # exits main () { local cmd="$1" shift local rc=0 $cmd "$@" || rc=$? exit $rc […]

Bash:可以使用相同的input文件作为pipe道命令的输出吗?

考虑这样的事情: cat file | command > file 这是好的做法吗? 这可能会覆盖input文件,因为我们正在阅读它,或者它总是先读取内存然后pipe道到第二个命令? 显然我可以使用临时文件作为中间步骤,但我只是想知道.. t=$(mktemp) cat file | command > ${t} && mv ${t} file