所以我在我的脚本中引入了一个数字,就像这样:
[StructLayout(LayoutKind.Sequential)]
public struct FormattedMessage_t
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MaxStrLength)]
public string Message;
public string[] ParamStrings;
public int[] GetParamStrs;
public int ParamCount;
public const int MaxStrLength = StrMax;
}
public static T[] GetArray<T>(IntPtr aTblPtr, int nRows)
{
var entrySize = Marshal.SizeOf(typeof(T));
IntPtr oneRowPtr = new IntPtr(aTblPtr.ToInt64());
T[] array = new T[nRows];
for (int i = 0; i < nRows; i++)
{
array[i] = (T)Marshal.PtrToStructure(oneRowPtr, typeof(T));
oneRowPtr = new IntPtr(oneRowPtr.ToInt64() + entrySize);
}
return array;
}
private void OnSetFormatMsg(IntPtr formatMsg, int nFormatMsg)
{
var array = GetArray<FormattedMessage_t>(formatMsg, nFormatMsg);
foreach (var msg in array)
{
var str = msg.Message;
// and so on
}
}
我希望从该号码中提取每个数字并检查它是否小于7.如下所示:
./script 795
我想知道如何提取每个数字。
答案 0 :(得分:5)
您可以使用子字符串来提取脚本第一个参数的第一个字符:
if [ ${1:0:1} -lt 7 ]; then
echo "The first digit is smaller than 7"
fi
要为每个角色执行此操作,您可以使用循环:
for (( i = 0; i < ${#1}; ++i )); do
if [ ${1:$i:1} -lt 7 ]; then
echo "Character $i is smaller than 7"
fi
done
请注意,我已将-le
(小于或等于)更改为-lt
(小于)以使您的信息正确无误。