我是shell脚本的新手,所以我有一个问题.我在这段代码中做错了什么?
#!/bin/bash
echo " Write in your age: "
read age
if [ "$age" -le "7"] -o [ "$age" -ge " 65" ]
then
echo " You can walk in for free "
elif [ "$age" -gt "7"] -a [ "$age" -lt "65"]
then
echo " You have to pay for ticket "
fi
Run Code Online (Sandbox Code Playgroud)
当我试图打开这个脚本时,它询问我的年龄,然后它说
./bilet.sh: line 6: [: 7]: integer expression expected
./bilet.sh: line 9: [: missing `]'
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么.如果有人能告诉我如何修复它,我会很感激,抱歉我的英语不好,我希望你们能理解我.
我目前正在尝试在软件中设置Android系统时间.是的,我知道有很多人尝试过 - 而且像我现在一样失败了.:-)
但我也知道可以在ROOTED手机上设置Android系统时间.我已经测试了一个名为ClockSync的应用程序.
所以我想知道如何在ROOTED设备上设置系统时间.请不要说这是不可能的.:-)
到目前为止我尝试的是设置以下权限:
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
<uses-permission android:name="android.permission.SET_TIME"/>
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中:
AlarmManager a = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
long current_time_millies = System.currentTimeMillis();
try {
a.setTime((long)current_time_millies+10000);
} catch (Exception e) {
// Why is this exception thrown?
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下例外:
java.lang.SecurityException:setTime:用户10054和当前进程都没有android.permission.SET_TIME.
我在ClockSync完美运行的同一设备上进行测试.那么 - 我做错了什么?或者更好:你能提供有效的测试代码吗?
如果我在仿真设备上进行全新启动,它会从主机操作系统获得正确的当前时间; 但是,如果我从快照重新加载设备,它将从创建快照的那一刻起获取时间/日期(例如,当我关闭模拟器时).时间/日期在任何时间后都不会重新同步.我发现的唯一方法是从快照恢复后手动更新时间.
Android虚拟设备具有默认属性:
Target = Android 4.0.3 - API等级15
CPU/ABI = ARM(armeabi-v7a)
SD卡= N/A.
Snapshot =已启用
摘要LCD密度= 240
最大VM应用程序堆大小= 48
设备RAM大小= 512
我在OS X Snow Leopard和Windows 7上尝试过模拟器,两者都表现出同样的问题.有没有办法让模拟器在从快照恢复后自动同步时间?
我在弄清楚如何在我的应用程序中获取当地时间时遇到了一个大问题,现在我认为我的代码很好,只是Genymotion有GMT时间.如何将Genymotion时钟更改为我当地的时区?我试图在他们的网站上找到帮助,但一无所获.如果有人有此经验,请提前感谢.我正在Eclipse中构建一个Android应用程序(如果这很重要).