stringContain
ප්රභේද (අනුකූල හෝ සිද්ධි ස්වාධීන)
මෙම සිරස් පිටාර ගැලීම් පිළිතුරු බොහෝ දුරට බාෂ් ගැන පවසන පරිදි , මම මෙම පෝස්ට් එකේ පතුලේම ස්වාධීන බාෂ් ශ්රිතයක් පළ කර ඇත්තෙමි ...
කෙසේ හෝ වේවා, මගේ ය
අනුකූල පිළිතුර
Bash- විශේෂිත විශේෂාංග භාවිතා කරමින් දැනටමත් පිළිතුරු රාශියක් ඇති හෙයින්, BusyBox වැනි දුප්පත් විශේෂාංග සහිත ෂෙල් වෙඩි යටතේ වැඩ කිරීමේ ක්රමයක් තිබේ :
[ -z "${string##*$reqsubstr*}" ]
ප්රායෝගිකව, මෙය ලබා දිය හැකිය:
string='echo "My string"'
for reqsubstr in 'o "M' 'alt' 'str';do
if [ -z "${string##*$reqsubstr*}" ] ;then
echo "String '$string' contain substring: '$reqsubstr'."
else
echo "String '$string' don't contain substring: '$reqsubstr'."
fi
done
මෙය Bash, Dash , KornShell ( ksh
) සහ අළු (BusyBox) යටතේ පරීක්ෂා කරන ලද අතර ප්රති result ලය සැමවිටම:
String 'echo "My string"' contain substring: 'o "M'.
String 'echo "My string"' don't contain substring: 'alt'.
String 'echo "My string"' contain substring: 'str'.
එක් ශ්රිතයකට
@EeroAaltonen විසින් ඇසූ පරිදි මෙහි එකම නිරූපණයේ අනුවාදයක් ඇත, එකම ෂෙල් වෙඩි යටතේ පරීක්ෂා කර ඇත:
myfunc() {
reqsubstr="$1"
shift
string="$@"
if [ -z "${string##*$reqsubstr*}" ] ;then
echo "String '$string' contain substring: '$reqsubstr'.";
else
echo "String '$string' don't contain substring: '$reqsubstr'."
fi
}
ඉන්පසු:
$ myfunc 'o "M' 'echo "My String"'
String 'echo "My String"' contain substring 'o "M'.
$ myfunc 'alt' 'echo "My String"'
String 'echo "My String"' don't contain substring 'alt'.
දැනුම්දීම: ඔබට පැන යා යුතුය හෝ ද්විත්ව කොටු කිරීම් සහ / හෝ ද්විත්ව උපුටා දැක්වීම් කළ යුතුය:
$ myfunc 'o "M' echo "My String"
String 'echo My String' don't contain substring: 'o "M'.
$ myfunc 'o "M' echo \"My String\"
String 'echo "My String"' contain substring: 'o "M'.
සරල කාර්යය
මෙය කාර්යබහුල බොක්ස්, ඩෑෂ් සහ, ඇත්ත වශයෙන්ම බාෂ් යටතේ පරීක්ෂා කරන ලදී:
stringContain() { [ -z "${2##*$1*}" ]; }
එසේනම් දැන්:
$ if stringContain 'o "M3' 'echo "My String"';then echo yes;else echo no;fi
no
$ if stringContain 'o "M' 'echo "My String"';then echo yes;else echo no;fi
yes
JSjlver විසින් පෙන්වා දී ඇති පරිදි ඉදිරිපත් කරන ලද නූල හිස් විය හැකි නම්, ශ්රිතය මෙසේ වනු ඇත:
stringContain() { [ -z "${2##*$1*}" ] && [ -z "$1" -o -n "$2" ]; }
හෝ ඒඩ්රියන් ගුන්ටර්ගේ අදහස අනුව -o
ස්විචයන් වළක්වා ගැනීම :
stringContain() { [ -z "${2##*$1*}" ] && { [ -z "$1" ] || [ -n "$2" ];};}
අවසාන (සරල) ශ්රිතය:
පරීක්ෂණ ඉක්මන් කිරීමට හැකි වන පරිදි ප්රතිලෝම කිරීම:
stringContain() { [ -z "$1" ] || { [ -z "${2##*$1*}" ] && [ -n "$2" ];};}
හිස් නූල් සමඟ:
$ if stringContain '' ''; then echo yes; else echo no; fi
yes
$ if stringContain 'o "M' ''; then echo yes; else echo no; fi
no
නඩුව ස්වාධීනයි (Bash only!)
නඩුවකින් තොරව නූල් පරීක්ෂා කිරීම සඳහා, එක් එක් නූල් කුඩා අකුරට හරවන්න:
stringContain() {
local _lc=${2,,}
[ -z "$1" ] || { [ -z "${_lc##*${1,,}*}" ] && [ -n "$2" ] ;} ;}
චෙක් පත:
stringContain 'o "M3' 'echo "my string"' && echo yes || echo no
no
stringContain 'o "My' 'echo "my string"' && echo yes || echo no
yes
if stringContain '' ''; then echo yes; else echo no; fi
yes
if stringContain 'o "M' ''; then echo yes; else echo no; fi
no