我正在尝试编写一个bash脚本来生成文件列表.我想我只是在循环中调用'find'.不幸的是,它在循环中产生了"find:command not found"错误,我不知道为什么.
为了简短起见,这个缩减版本复制了这个问题,而没有让我们陷入无关紧要的代码中.
#!/bin/bash
IFSprev=$IFS
IFS=$'|'
PATHS='openvpn|vms'
SOURCE='/mnt/store/'
#find "${SOURCE}vms" -type f
for PATH in ${PATHS}
do
echo -----------------------------------
find "${SOURCE}${PATH}" -type f
done
IFS=$IFSprev
Run Code Online (Sandbox Code Playgroud)
在进行故障排除时,我添加了第一个'find'命令...添加后,它随后在循环中工作.如果我再次注释掉它,循环中的'find'将恢复抛出错误.
鉴于我要将循环输出重定向到文件,我可以使用额外的'find'命令,甚至只需重定向到null.但是,我是一个好奇的家伙,我真的想找到问题所在.
感谢您的任何意见.
我正在使用pandoc将markdown文件转换为独立的html文件。我有包含在-c命令行选项中的css文件。我想对javascript文件做同样的事情,但是我没有找到包含类似于该-c选项的脚本文件的选项。
有这样的选择吗?如果没有,最有效的方法是什么?
在shell脚本中,可能是bash,我们如何才能将许多相同类型的参数添加到内部数组中?一个例子是这样的:
./combine -f file1 -f file2 -f file3 -o output_file
Run Code Online (Sandbox Code Playgroud)
我知道这个简单的问题可以通过cat和重定向单独解决.但我感兴趣的是如何让我们说bash我们可以把所有三个-f参数都放在一个数组中,这样我们可以用它们做些什么呢?
由于要求的性质,我们需要某种形式的标志,因为会有其他参数.
在像python这样的语言中,它非常简单,尤其是像docopt这样的库.您可以按预期指定一个数组,然后就完成了.
非常感谢
我在Linux Shell中同时运行多个命令,例如
echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"
Run Code Online (Sandbox Code Playgroud)
我想将所有输出重定向到file1。我知道我可以>file1在每个单独的命令之后添加,但这似乎很庞大。我怎样才能做到这一点?
如果一切正常,或者某些任务进行了更改,则ansible-playbook运行将返回0。
我正在寻找一种方法,以便在上次运行期间发生更改时在命令行中获取信息。
有人知道这种方法吗?
背景是我想通过Jenkins管道监视我的服务器,并在发生更改时得到警报。
谢谢你的帮助。
我目前需要弄清楚我的USB设备所连接的端口名称是什么.更具体地说,我需要知道如何处理以下内容
我正在使用Mac,我已经运行了命令行system_profiler SPUSBDataType,它给了我以下内容.我感兴趣的设备是第二个:CP2102 USB到UART桥接控制器.但是我如何弄清楚该设备连接的串口是什么?我的第一张照片需要它.
USB:
USB 3.0 Bus:
Host Controller Driver: AppleUSBXHCIWPT
PCI Device ID: 0x9cb1
PCI Revision ID: 0x0003
PCI Vendor ID: 0x8086
Bluetooth USB Host Controller:
Product ID: 0x8290
Vendor ID: 0x05ac (Apple Inc.)
Version: 1.46
Speed: Up to 12 Mb/sec
Manufacturer: Broadcom Corp.
Location ID: 0x14300000 / 2
Current Available (mA): 500
Current Required (mA): 0
Extra Operating Current (mA): 0
Built-In: Yes
CP2102 USB to UART Bridge Controller:
Product ID: 0xea60 …Run Code Online (Sandbox Code Playgroud) 我有一个包含大量数据的文件,例如:
something_id: someId
something_version: someVersion
something_log: someLog
Run Code Online (Sandbox Code Playgroud)
我想在包含something_log哪个行之前添加一行文本something_test: example1
我该怎么做?任何帮助,将不胜感激!
我想创建一个简单的gawk脚本来提取某个文件的第n列.我希望在命令行输入文件的名称和n的值.我用这个脚本制作可执行文件chmod +x.
因此,要从文件foo中提取第三列,我将输入:
awkextract foo 3
Run Code Online (Sandbox Code Playgroud)
我对脚本的尝试awkextract是:
#!/opt/local/bin/gawk -v k=$2 -f
{print $k}
Run Code Online (Sandbox Code Playgroud)
但是无意义的结果表明这不起作用.我如何解决它?
PS.我知道我可以通过cut命令来做到这一点,我只是在尝试......
我有许多bash脚本执行很多类似的任务,他们使用一些外部二进制程序.问题是二进制程序通常不会像它们应该那样终止.由于我的脚本运行了数千次,因此很快发生这些进程的许多空闲/接近死亡的实例正在累积.我无法修复这些程序,因此我需要确保我的bash脚本正在终止它们.
SE中有一些主题已经处理了终止bash脚本过程的任务.我已经应用并测试了那里写的内容,并且在某种程度上它起作用了.但它对我的情况不起作用,我不明白为什么,因此我开了一个新问题.
我的脚本有一个层次结构,这里以简化的方式显示:脚本A调用脚本B,脚本B并行调用脚本C的多个实例以使用所有CPU.例如,脚本B并行运行脚本C的5个实例,当脚本C的一个实例完成时,它启动一个新的脚本C,总共运行数千个脚本C.脚本C调用几个不能很好地终止的外部二进制文件/命令.它们在后台并行并相互通信.
但是,我的脚本C能够检测外部命令何时完成其工作,即使它们尚未终止,然后我的bash脚本退出.
为了在完成bash脚本期间终止所有外部程序,我添加了一个退出陷阱:
# Exit cleanup
cleanup_exit() {
# Running the termination in an own process group to prevent it from preliminary termination. Since it will run in the background it will not cause any delays
setsid nohup bash -c "
touch /tmp/trace_1 # To see if this code was really executed to this point
# Trapping signals to prevent that this function is terminated preliminary
trap '' SIGINT SIGQUIT SIGTERM SIGHUP ERR
touch /tmp/trace_2 # To see …Run Code Online (Sandbox Code Playgroud)