簡體   English   中英

Bourne Shell腳本打印出最后一個參數

[英]Bourne Shell Script to print out last argument

我試圖創建一個布爾型shell腳本,該腳本將使用0個或更多的空格,並打印出最后一個空格。我習慣於編寫Java,對此我很困惑,慢慢開始學習C。

@Michael解決方案的替代方法:

#!/usr/bin/env bash
echo "${@: -1}"
  • $@是具有所有參數的數組。
  • :通常用於分割字符串(您可以在echo "${USER: -1}"進行嘗試,以驗證它是否打印了用戶名的最后一個字符),但也可以用於數組以獲取最后一個元素
  • 大括號是數組索引工作所必需的
  • 引號只是一種很好的做法,可以使代碼更加靈活,以防您想混入其他變量,或者需要在需要空字符串的語句中使用值,而在沒有參數的情況下則不需要任何值(例如if [ "${@: -1}" = "--help" ]
lastArg=`echo $@ | awk '{print $NF}'`

這是一個簡短的Bash腳本,可以完成此操作:

#!/usr/bin/env bash

echo "${!#}"

但是,這不是Bourne shell腳本。 不能使用read命令從鍵盤read Arg。 而是在運行腳本時在命令行上提供它們。 例如,如果將此文本放在script.sh並運行./script.sh abcde ,它將打印:

e

這應該工作:

eval lastarg='$'$#
echo last arg is $lastarg

這適用於/bin/shbashdash

無論如何,我都無法使用“真實的” /bin/sh對其進行測試。

在bash中:

last_arg=`echo $* | rev | cut -d " " -f1 | rev`;
echo $last_arg

您的問題提到C。在C中,它更簡單:

int main (int argc, char *argv[]) {
     char *last_arg = argv[argc - 1];
     [...]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM