चर की गणना करें, और इसे दूसरे चर पर आउटपुट करें


11

केवल कैलकुलेटर मैं जानता हूं bc। मैं 1एक चर में जोड़ना चाहता हूं , और दूसरे चर में आउटपुट करना चाहता हूं ।

मुझे nextnumएक फ़ाइल में स्ट्रिंग की गिनती से चर मिला :

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

nextnumमान कहते हैं 1। जब साथ जोड़ा 1जाएगा, तो यह बन जाएगा 2। गणना करने के लिए, मैं चलाता हूं:

rownum=`$nextnum+1 | bc`

लेकिन त्रुटि मिली:

1+1: command not found

मैं सिर्फ गणना भाग में विफल रहा। मैंने बैकटिक को बदलने की कोशिश की है लेकिन फिर भी काम नहीं कर रहा है। मुझे नहीं पता कि चर की गणना कैसे करें और इसे दूसरे चर में कैसे आउटपुट करें।


जवाबों:


22

` `एक वैकल्पिक कमांड के अंदर सबस्टेशन एक ही होना चाहिए:

rownum=`echo $nextnum+1 | bc`

लेकिन $( )इसके बजाय उपयोग करने के लिए बेहतर है ` `:

rownum=$(echo $nextnum+1 | bc)

लेकिन इसके लिए कोई आवश्यकता नहीं है bc, शेल पूर्णांक अंकगणित करने में सक्षम है :

rownum=$((nextnum+1))

या में भी सरल bashऔर ksh:

((rownum=nextnum+1))

8

आप धनुष में अंकगणित में निर्मित का उपयोग भी कर सकते हैं:

rownum=$((nextnum+1))

जो थोड़ा तेज होगा।


2

पूरी तरह से सही और सुझाए गए समाधानों को पूरा करें, केवल पूर्व समय में जिस तरह से किया जाना है उसका उल्लेख करने के लिए जब केवल बॉर्न-शेल उपलब्ध था, यही तरीका इसे पसंद करता है:

rownum=`expr $nextnum + 1` 

1

मैं उपयोग करूंगा (जैसा कि पहले उल्लेख किया गया था) rownum=$((nextnum+1))या ((rownum=nextnum+1))यदि आप एक मानक कमांड पसंद करते हैं तो आप लेट कमांड का उपयोग कर सकते हैं, जैसेlet rownum=$nextnum+1


1
let"मानक कमांड" को कॉल करना बहुत भ्रामक है। $((…))मानक (POSIX) सिंटैक्स है, जबकि letksh (और bash, zsh) एक्सटेंशन है।
गाइल्स का SO- बुराई पर रोक '23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.