在 Bash åŠå…¶å…¼å®¹çš„ shell ä¸ï¼Œå½“ä½ ä½¿ç”¨ {1..10}
è¿™ç§å¤§æ‹¬å·æ‰©å±•æ—¶ï¼Œå®ƒé»˜è®¤ä¼šç”Ÿæˆä¸€ä¸ªç”±ç©ºæ ¼åˆ†éš”çš„åºåˆ—ã€‚å¦‚æžœä½ æƒ³è¦æ¯ä¸ªæ•°å—åŽè·Ÿ .d
并使它们在新的一行上出现在 flist
文件ä¸ï¼Œä½ å¯ä»¥ä½¿ç”¨å‡ ç§ä¸åŒçš„方法。
printf
printf
命令å…è®¸ä½ æ ¼å¼åŒ–è¾“å‡ºï¼Œå¹¶ä¸”ä½ å¯ä»¥ä½¿ç”¨æ¢è¡Œç¬¦ \n
æ¥åˆ†éš”æ¯ä¸€è¡Œã€‚
printf "%s.d\n" {1..10} > flist
ä½ ä¹Ÿå¯ä»¥ä½¿ç”¨ for
循环æ¥é历数å—范围,并将æ¯ä¸ªæ•°å—与 .d
一起写入文件,并在æ¯æ¬¡è¿ä»£åŽæ·»åŠ 一个æ¢è¡Œç¬¦ã€‚
for i in {1..10}; do
echo "$i.d" >> flist
done
注æ„,我在这里使用了 >>
而ä¸æ˜¯ >
ï¼Œå› ä¸º >>
ä¼šå°†è¾“å‡ºè¿½åŠ åˆ°æ–‡ä»¶ä¸ï¼Œè€Œä¸æ˜¯è¦†ç›–它(如果文件已ç»å˜åœ¨çš„è¯ï¼‰ã€‚å¦‚æžœä½ ç¡®å®šæ–‡ä»¶æ˜¯ç©ºçš„æˆ–è€…ä½ æƒ³è¦è¦†ç›–å®ƒï¼Œä½ ä¹Ÿå¯ä»¥ä½¿ç”¨ >
。
echo
和 tr
虽然这ä¸æ˜¯æœ€ç›´æŽ¥çš„æ–¹æ³•ï¼Œä½†ä½ ä¹Ÿå¯ä»¥ä½¿ç”¨ echo
生æˆä¸€ä¸ªç”±ç©ºæ ¼åˆ†éš”的列表,然åŽä½¿ç”¨ tr
å‘½ä»¤å°†ç©ºæ ¼æ›¿æ¢ä¸ºæ¢è¡Œç¬¦ã€‚
echo {1..10}.d | tr ' ' '\n' > flist
但是请注æ„,这ç§æ–¹æ³•ä¼šåœ¨æ¯ä¸ª .d
åŽé¢ä¹Ÿæ·»åŠ 一个æ¢è¡Œç¬¦ï¼Œè¿™å¯èƒ½ä¸æ˜¯ä½ 想è¦çš„。为了åªåœ¨æ•°å—åŽé¢æ·»åŠ æ¢è¡Œç¬¦ï¼Œä½ 需è¦ä½¿ç”¨å…¶ä»–方法,比如å‰é¢æ到的 printf
或循环。
在 Bash 脚本或命令行ä¸ï¼Œecho
命令用于在终端输出文本或å˜é‡çš„值。当涉åŠåˆ°å引å·ï¼ˆ``)或 $(...)
(这是å引å·çš„现代替代å“)时,它们的用途是命令替æ¢ï¼Œå³æ‰§è¡Œæ‹¬å·å†…的命令,并将输出替æ¢åˆ°åŽŸå§‹å‘½ä»¤ä¸çš„那个ä½ç½®ã€‚
现在,让我们分æžä½ 给出的两个命令:
echo "
cat flist"
这里使用了åŒå¼•å·åŒ…围了å引å·å†…的命令 cat flist
。但实际上,这些åŒå¼•å·åœ¨è¿™é‡Œæ˜¯å¤šä½™çš„ï¼Œå› ä¸ºå引å·å†…的命令 cat flist
会首先被执行,并且其输出会被替æ¢åˆ° echo
命令的å‚æ•°ä½ç½®ã€‚所以,这个命令实际上ç‰åŒäºŽï¼š
echo $(cat flist)
或者
echo `cat flist`
这里,cat flist
会输出文件 flist
çš„å†…å®¹ï¼Œç„¶åŽ echo
会将这些内容输出到终端。
echo
cat flist``这个命令没有使用引å·åŒ…å›´å引å·å†…的命令,但这在è¯æ³•ä¸Šä»ç„¶æ˜¯æœ‰æ•ˆçš„。然而,这ç§å†™æ³•å¯èƒ½ä¼šå¯¼è‡´ä¸€äº›é—®é¢˜ï¼Œç‰¹åˆ«æ˜¯å½“ cat flist
的输出包å«ç©ºæ ¼ã€æ¢è¡Œç¬¦æˆ–其他特殊å—符时。例如,如果 flist
文件的内容是:
one two
three
那么 echo
cat flist`` 命令会输出:
one two three
注æ„,这里所有的行都被åˆå¹¶åˆ°äº†ä¸€è¡Œï¼Œå› 为 echo
命令默认会将所有å‚数作为å•ä¸ªå—符串输出,并且å‚æ•°ä¹‹é—´ç”±ç©ºæ ¼åˆ†éš”ã€‚
ä½†æ˜¯ï¼Œå¦‚æžœä½ ä½¿ç”¨å¼•å·ï¼ˆå¦‚上é¢ç¬¬ä¸€ä¸ªå‘½ä»¤æ‰€ç¤ºï¼‰ï¼Œé‚£ä¹ˆ echo
会将 cat flist
的输出作为一个整体å—符串处ç†ï¼ŒåŒ…括其ä¸çš„ç©ºæ ¼å’Œæ¢è¡Œç¬¦ã€‚
总结:虽然两个命令在大多数情况下å¯èƒ½çœ‹èµ·æ¥ç›¸ä¼¼ï¼Œä½†ä½¿ç”¨å¼•å·å¯ä»¥ç¡®ä¿æ£ç¡®å¤„ç†åŒ…å«ç‰¹æ®Šå—符的输出。而且,现代的åšæ³•æ˜¯æ›´å€¾å‘于使用 $(...)
而ä¸æ˜¯åå¼•å· ```ï¼Œå› ä¸º $(...)
更易于嵌套和阅读。