#!/bin/bash
COUNTER=$#
until [ $COUNTER -eq 0 ]; do
args[$COUNTER]=\$$COUNTER
let COUNTER-=1
done
echo ${args[@]}
Khi tôi chạy này, tôi nhận được kết quả như sauTạo mảng trong vòng từ số lập luận
[email protected]:~/sandbox# ./script.sh first second third
$1 $2 $3
và tôi hy vọng nó vang ra những gì $ 1, $ 2, và $ 3 không phải là một giá trị văn bản của "$ 1"
Tôi đang cố viết một tập lệnh bằng bash để tạo một mảng có kích thước của số đối số mà tôi đưa ra.
Tôi đang mong đợi
[email protected]:~/sandbox# ./script.sh alpha bravo charlie
alpha bravo charlie
hoặc
[email protected]:~/sandbox# ./script.sh 23425 jasson orange green verb noun coffee
23425 jasson orange green verb noun coffee
Vì vậy, mục tiêu là làm cho
args[0]=$1
args[1]=$2
args[2]=$3
args[3]=$4
Cách mà tôi có nó, các $1,$2,$3
không được suy nhưng chỉ được đọc dưới dạng chuỗi văn bản.
vâng, đúng vậy. cảm ơn vì đã trả lời nhanh chóng. Tôi vẫn còn một chút noob với kịch bản. – spezticle
+1 như thường lệ. FYI, 'cho i' có thể là một tối ưu hóa đáng kể so với' for i in "$ @" 'trong hầu hết các shell (hầu như không đáng nhắc đến, nhưng tôi nghĩ rằng tôi đã từng thấy bạn viết nó như thế này trước đây.) – ormaaj