我有以下 shell 腳本:
serial_numbers=$(ddcutil detect | grep "Serial number" | awk '{print $3}' | uniq)
echo $serial_numbers | xargs -P $(echo $serial_numbers | wc -w) -I % ddcutil setvcp 10 100 --sn %
該變數$serial_number包含字串'8TRNJQ2 FGVF2Y2'。
xargs將此字串解釋為一個單獨的引數,并且只產生一次ddcutil setvcp. 但我想xargs在空格處拆分字串,所以我得到兩個呼叫,8TRNJQ2并FGVF2Y2作為引數。
編輯: using-t ' '給我字串中最后一部分的奇怪結果:'FGVF2Y2'$'\n'
uj5u.com熱心網友回復:
xargs如果您直接從命令通過管道傳輸它,則可以正常作業,但如果您echo是相同命令輸出的結果,則不能。
在您的命令中添加此轉換:
#!/bin/bash
echo $serial_numbers | tr ' ' '\n' | xargs -P $(echo $serial_numbers | wc -w) -I % ddcutil setvcp 10 100 --sn %
xargs現在將了解您要拆分序列號。
或者,您可以將 放在tr第一行并將分隔的序列號存盤在變數中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/473091.html
