Bash
如何遍歷文件並執行行
我有一個文本文件,其中包含用於從數據庫中獲取一些數據的 bash 命令。每個命令都用換行符分隔。請參見下面的範例:(命令也可能是“ls -l”、“cat 不管什麼.txt”等)
prefetch SRR403012 fastq-dump --fasta 0 SRR403012 my_cpp_program.out SRR403012 ...
如何創建執行所有這些命令的 bash 腳本?我想要按順序執行命令的東西。然而!重要的是要注意命令在終止之前需要一些時間,因為我要獲取的文件很大。因此,for 循環也應該等到執行完成。
#!/bin/bash FILENAME="my_commands.txt" LINES=$(cat $FILENAME) for LINE in LINES do execute $LINE done
您的命令列表實際上是一個 shell 腳本,即使沒有 shebang(
#!/bin/bash
頂部的行)。您可以將其指定為 shell 的參數,shell 將執行它,一次一行,等待執行完成:bash my_commands.txt
或者,如果您的命令實際上不需要
bash
,sh my_commands.txt
bash
腳本是
- 按行順序執行
- 除非你不這樣做
#!/bin/bash
僅當您想使文件本身成為執行檔並顯示哪個命令用於解釋其後的命令行時,才需要使用 hashbang 。所以你需要做的就是
bash your-command-file
檢查這個“命令文件”。另存為
commands1
並執行bash commands1
echo -n "Hi, " sleep 1 echo -n "how " sleep 1 echo -n "are " sleep 1 echo "you?"
並與這個 (
commands2
) 進行比較:echo -n "Hi, " & sleep 1 & echo -n "how " & sleep 1 & echo -n "are " & sleep 1 & echo "you?"
如您所見,在後一種情況下,通過發送使命令成為後台程序,命令或多或少是並行執行的
&
。