Questions tagged «bash-scripting»

Bash脚本正在使用Bash Shell语言制作脚本。


2
删除文件并使用find [duplicate]排除一些文件
这个问题在这里已有答案: 如何删除某些目录中的所有文件除外? 17个答案 这是一个老问题。我知道如何删除文件并排除一些,如下所示: rm `find ~/temporary/Test\ 1 -mindepth 1 -maxdepth 1|grep -v 'A'` 但问题是名称中包含空格的文件夹'Test 1',查找的结果是 /home/owner/temporary/Test 1/B 它会产生rm错误,我该如何解决?

1
在子shell或后台执行shell命令?
实际上我主要使用Ruby,但现在我已经创建了一个bash脚本文件。从这个脚本文件我在屏幕上显示消息。这是我的情景。 我使用aosd_cat模块在屏幕上显示消息,我成功完成了。为此,我使用了他们的文档。 这是我的message.sh脚本文件: #!/bin/bash function message_1(){ if [ condition ] echo 'message -1' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60 else echo 'message -4' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n …


1
for loop(f in * .txt)如果不存在* .txt文件则抛出错误
我有一个小的bash脚本,看起来像这样: #!/bin/sh for f in ./*.txt do f=$(basename $f) echo "Processing $f" scp somewhere mv $f done/`basename $f` done 这是完美的工作,但只要没有文件,它就会抛出这个错误:*.txt: No such file or directory 我想知道为什么它进入循环以及我怎么能这样做(如果可能没有新的?)

3
少输出到文件
在bash上,我尝试使用以下命令删除文件的最后3列: 头-n -3文件>文件 但是文件出来是空的。我可以绕过它,但是我想知道是什么原因造成的。 谢谢一群!

1
从Spotlight启动bash脚本时,如何隐藏终端窗口?
当我从Spotlight运行bash脚本时,将启动一个终端窗口来执行它。脚本完成后,窗口关闭,但我想完全阻止该窗口出现在桌面上。 该脚本有多个变体(在同一脚本中),与{e,f,} grep相似,它使用启动名称$ 0来选择其选项。它将一些内容附加到文件中,并在文件上打开一个编辑器(emacs,尽管不相关),因此,我需要进行交互的唯一窗口是编辑器。 目前,每个变体的唯一开销是指向脚本的硬链接。我宁愿不使用Platypus或AppleScript应用程序来启动它,因为那样的话,我需要每个变体一个完整的程序包。我只想让终端在不显示其窗口的情况下运行。

0
Bash脚本 - 找到“ERROR”并输出到文件
我正在编写我的第一个bash脚本,可以使用一些帮助/建议。我目前无法测试脚本 - 只是想知道我是否正确设置了它。 我有一个文件$ A_HOME / bin / nohup.out,我正在搜索“ERROR”这个词。我需要它将结果输出到文件,例如output_error.csv或output_error.txt。 根据我所读到的内容,这是我提出的脚本 find "$A_HOME"/bin/nohup.out -exec grep "ERROR" {} /; -print >> output_error.csv 要么 grep -r ERROR "$A_HOME"/bin/nohup.out >> output_error.csv 谁能帮我吗?我想我应该使用find,但我已经读过它在这种情况下没有必要。 非常感激。

3
匹配列标题并使用awk打印列的值
我在列中的文件中有一个数据。我想编写一个脚本,它显示与列标题匹配的列的数据。 C-1 C-2 C-3 C-4 C-5 C-6 C-7 C-8 C-9 10 30 35 20 9 65 87 30 29 40 32 67 78 30 54 24 21 13 50 43 32 12 43 65 78 67 54 如果用户选择显示C-8列,那么输出必须是 C-8 30 21 67 我不确定如何匹配列名称并使用awk打印输出。 谢谢, KJ

2
对于有条件的循环
我有一个脚本,可以在许多服务器上添加用户。因为我正在添加许多服务器,我正在使用循环。 以下是成功添加用户时的输出。 0,22529,User added. 如果未添加用户,则会收到此错误 1,23996,CLI failed to connect to database. 要么 1,22560,The current state of the server does not allow this action. script Begin read user echo -e '\E[32;40m'"\033[1mPlease wait .... adding id on all server\033[0m" PORT=777 USER=User PASSWORD=**** for server in server1.abc.com server2.abc.com do command // to add …


2
bash:如何在select中使用带引号的参数
从一个命令我得到一些参数,我想在shell脚本中使用bash中的select语句向用户提供。命令提供的参数可能包含空格,因此受引号保护。这是一个简化的例子。 这按预期工作: select opt in a b "c d" do echo $opt break done 输出如预期: 1) a 2) b 3) c d #? 但是使用变量中的命令输出它不能按预期工作: opts="a b \"c d\"" select opt in $opts do echo $opt break done 虽然$ opts包含与第一个选择示例中的硬编码类型相同的输出,但输出是不同的: 1) a 2) b 3) "c 4) d" #? 所以不是bash消耗了报价。它们被保留,但引号不会像我们硬编码时那样封装参数。正如我已经写过的那样,我将参数作为命令的输出。它们可能包含空格,因此已经被引号保护。如何将它们整合到“选择”语句中?它不是关于单引号和双引号。使用单引号也会发生同样的情况: 1) …

2
什么语言以及如何测试将在android终端应用程序中运行的脚本
我想编写一个可以在Android设备上的终端应用程序中运行的脚本。我有关于入门的基本问题。 背景:我有一个Windows批处理文件(基本上)从Android平板电脑中提取文件夹,用PC上的图像替换每个文件夹中的图像,然后将文件夹推回。我现在想要使用一个脚本来执行此操作,该脚本将在我的平板电脑上的终端或其他运行脚本的应用程序中运行。(它将使用设备上已有的图像替换文件夹中的图像。) 我只需要知道如何开始: 我是否使用bash或者我/我应该使用其他脚本语言,还是只使用“普通”linux? 我该如何测试这个脚本? 我首先想到我会在Notepad ++中编写一些命令,保存为.sh文件,手动将脚本文件复制到平板电脑并运行它,但这看起来很麻烦。有没有办法在Windows上测试我的USB连接平板电脑(类似于)“linux脚本控制台”?谢谢。

1
正则表达式搜索和替换bash变量
我的一些bash脚本需要在发送之前进行整理。我想做的一件事是对所有变量名使用花括号。因此,它所说的任何地方都$PWD应该改为${PWD}等等。 作为测试,我使用代码 PATH=${PWD} PATH_PATH=$PATH PATH_PATH_PATH=$PATH_PATH 我的想法是使用正则表达式搜索并替换emacs。查找所有变量名称(使用CTRL-ALT-S)的最佳表达式是$[A-Za-z0-9_\-]*,所以是'a'到'z','A'到'Z','0'到'9',下划线或连字符的序列跟随'$'。此外,它仅保留已经支撑的变量名称。 现在替换: 在手册中它说替换是'M-%string RET newstring RET'。在我的电脑上'M-%'是'ESC-%'。Regexp替换为'CM-%regexp RET newstring RET'。我猜那对我来说是C-ESC-%?不幸的是,这也是KDE中“系统活动”监视器的捷径。 我现在有两个问题: 是否有另一种方式来调用regexp替换比C-ESC-% 对于上面的例子,“newstring”的表达应该是什么?

1
如何在Linux机器上的文本文件中获取通过SSH在远程主机上执行的命令的输出?
如何在Linux机器上的文本文件中获取输出在远程主机上通过SSH执行的命令? 例如,我SSH远程主机: ssh admin@10.0.0.1 提供密码: admin@IP 10.0.0.1's password: xxxx 现在我命令获取日志: show eventlog 现在我想在文本文件中捕获并保存此命令的输出,并手动或通过脚本将该文件存储在本地Linux机器上。另外,如果我想从多个设备获取输出应该是什么过程?

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.