बाहरी कमांड को शेल स्क्रिप्ट में बदलते समय, मैंने अर्क के NF
से छुटकारा पाने के लिए एक सरणी का उपयोग किया।POSIX sh में किसी सरणी को कैसे चिह्नित करें?
अब, के बाद से मैं POSIX श को पार्टी से चले गए, मैं नहीं मिल सकता है सरणी सही चिह्नित:
#!/bin/bash
export RANGE="0 1 4 6 8 16 24 46 53"
RANGE=($RANGE)
echo arrayelements: $((${#RANGE[@]}))
LAST=$((${#RANGE[@]}-1))
echo "Last element(replace NF): ${RANGE[$LAST]}"
# ./foo
arrayelements: 9
Last element(replace NF): 53
मैं OpenBSD के, श उपयोग कर रहा हूँ और यह ksh के रूप में बिल्कुल एक ही आकार की है। /bin/sh
के लिए ऊपर बदलने, ऐसा लगता है कि निम्नलिखित काम नहीं करता:
set -A "$RANGE"
set -- "$RANGE"
मैं /bin/sh
में ऊपर स्क्रिप्ट कैसे एहसास कर सकता है? (ध्यान दें कि अगर आप --posix
के साथ बैश का आह्वान करते हैं तो यह ठीक काम करता है, जो मैं देखता हूं।)
इसके अलावा: ऑल-कैप्स परिवर्तनीय नाम खराब रूप हैं। Http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html, चौथे पैराग्राफ में पर्यावरण परिवर्तनीय नामों के लिए सम्मेलनों को देखें, ध्यान रखें कि पर्यावरण चर और शैल वेरिएबल नामस्थान साझा करते हैं - इसलिए निम्न-केस नामों का उपयोग करना आपके स्थानीय चर के लिए सिस्टम को अर्थ के साथ गलती से कुछ लिखना बंद कर देगा। –