2012-05-02 12 views
16

खोल में हमारे पास कमांड शिफ्ट है, लेकिन मैंने कुछ उदाहरणों पर देखा कि इसकी देनदारी 3शैल शिफ्ट प्रक्रिया - यह क्या है?

शिफ्ट के बाद कोई संख्या क्यों है? और इसके बारे में क्या? यह क्या करता है ?

उदाहरण:

echo “arg1= $1 arg2=$2 arg3=$3” 
shift 
echo “arg1= $1 arg2=$2 arg3=$3” 
shift 
echo “arg1= $1 arg2=$2 arg3=$3” 
shift 
echo “arg1= $1 arg2=$2 arg3=$3” 
shift 

उत्पादन होगा:

arg1= 1 arg2=2 arg3=3 
arg1= 2 arg2=3 arg3= 
arg1= 3 arg2= arg3= 
arg1= arg2= arg3= 

लेकिन जब मैं कि जोड़ने के लिए, यह इसे सही ढंग से प्रदर्शित नहीं करता है।

+0

आप क्या उत्पादन मिलता है? –

+0

नीचे दिए गए उत्तरों देखें। 'शिफ्ट 3' अनिवार्य रूप से 'शिफ्ट' जैसा ही है; खिसक जाना; shift'। –

उत्तर

43

man पृष्ठ पर एक नज़र, जो कहते हैं लें:

shift [n] 
    The positional parameters from n+1 ... are renamed to $1 .... 
    If n is not given, it is assumed to be 1. 

एक उदाहरण स्क्रिप्ट:

#!/bin/bash 
echo "Input: [email protected]" 
shift 3 
echo "After shift: [email protected]" 

भागो यह:

$ myscript.sh one two three four five six 

Input: one two three four five six 
After shift: four five six 

यह दिखाता है कि 3 से स्थानांतरण के बाद , $1=four, $2=five और $3=six

1

यह केवल या तो Bash manual पढ़ रहा है या man shift टाइप करके जवाब दिया जाएगा:

 shift [n] 

n द्वारा छोड़ा को स्थितीय मापदंडों शिफ्ट। स्थिति एन + 1 से पैरामीटर ... $ # का नाम बदलकर $ 1 ... $ # - n कर दिया गया है। पैरामीटर संख्या $ # से $ # - एन + 1 के प्रतिनिधित्व से अनसेट हैं। n गैर-ऋणात्मक संख्या $ # से कम या उसके बराबर होनी चाहिए। यदि एन शून्य से अधिक है या $ # से अधिक है, तो स्थितित्मक पैरामीटर नहीं बदले गए हैं। यदि n प्रदान नहीं किया गया है, तो यह माना जाता है 1. वापसी की स्थिति शून्य है जब तक कि $ # से अधिक या शून्य से कम नहीं है, अन्यथा गैर-शून्य।

+1

यकीन नहीं क्यों, लेकिन मेरे पास शिफ्ट के लिए कोई मैन्युअल प्रविष्टि नहीं है। शायद यह distro पर निर्भर करता है, लेकिन बैश मैनुअल यह भी है। – iyrin

2

आप man bash का उपयोग shift builtin आदेश को खोजने के लिए:

पारी [n]

n + 1 से स्थितीय मापदंडों ... $ 1 का नाम बदलकर कर रहे हैं .... पैरामीटर संख्या $ # से नीचे $ # - एन + 1 अनसेट द्वारा प्रतिनिधित्व किया गया है। n $ # से कम या उसके बराबर गैर-ऋणात्मक संख्या होना चाहिए। यदि एन 0 है, तो कोई पैरामीटर नहीं बदला जाता है। यदि n नहीं दिया गया है, यह माना जाता है कि 1. यदि एन $ # से अधिक है, तो स्थिति पैरामीटर नहीं बदले गए हैं। वापसी स्थिति शून्य से अधिक है यदि n $ # से अधिक या शून्य से कम है; अन्यथा 0.

0

बाईं ओर स्थित स्थितित्मक पैरामीटर को एन द्वारा शिफ्ट करें। एन + 1 से स्थितित्मक पैरामीटर ... $ # का नाम बदलकर $ 1 ... $ # - n हो गया है। संख्या $ # से $ # - एन + 1 द्वारा प्रतिनिधित्व पैरामीटर अनसेट हैं। n $ # से कम या उसके बराबर गैर-ऋणात्मक संख्या होना चाहिए। यदि n शून्य है या $ # से अधिक है, तो स्थितित्मक पैरामीटर नहीं बदले गए हैं। यदि एन आपूर्ति नहीं की जाती है, तो यह 1 माना जाता है।वापसी की स्थिति शून्य है जब तक कि एन $ # से अधिक या शून्य से कम न हो, अन्यथा शून्य न हो।

  1. सूची आइटम
संबंधित मुद्दे