如何在不使用ruby的情况下列出init.d脚本的文件(How can I list files for an init.d script without ruby)
我需要将使用ruby的init.d脚本转换为不使用ruby。 我可以使用Perl或Python或其他东西,但我不能使用红宝石。 我的主要问题是搞清楚如何动态地获取目录中的* .jar文件列表,并用':'分隔它们。 剩下的我可以用bash脚本轻松完成。
以下是我正在使用的Ruby代码:
#!/usr/local/bin/ruby require 'fileutils' HOME = '/usr/local/myproject' JAVA_HOME = '/usr/java/jdk' JARS = Dir.glob(File.join(HOME, 'lib', '*.jar')).join(':') PID_FILE = '/var/run/myproject.pid' OUT_FILE = File.join(HOME, "stdout") ERR_FILE = File.join(HOME, "stderr") case ARGV.first when 'start' exec "/usr/local/bin/jsvc -home #{JAVA_HOME} -cp #{JARS} -pidfile #{PID_FILE} -DHOME=#{HOME} -user me -outfile #{OUT_FILE} -errfile #{ERR_FILE} mypackage.MyProject" when 'stop' exec "/usr/local/bin/jsvc -home #{JAVA_HOME} -cp #{JARS} -pidfile #{PID_FILE} -stop mypackage.MyProject" end
I need to convert a init.d script that uses ruby to not use ruby. I can use perl or python or something else, but I can't use ruby. My main problem is figuring out how to dynamically get the list of *.jar files in a directory and separate them with ':'. The rest I could easily do with a bash script.
Here is the Ruby code I'm working with:
#!/usr/local/bin/ruby require 'fileutils' HOME = '/usr/local/myproject' JAVA_HOME = '/usr/java/jdk' JARS = Dir.glob(File.join(HOME, 'lib', '*.jar')).join(':') PID_FILE = '/var/run/myproject.pid' OUT_FILE = File.join(HOME, "stdout") ERR_FILE = File.join(HOME, "stderr") case ARGV.first when 'start' exec "/usr/local/bin/jsvc -home #{JAVA_HOME} -cp #{JARS} -pidfile #{PID_FILE} -DHOME=#{HOME} -user me -outfile #{OUT_FILE} -errfile #{ERR_FILE} mypackage.MyProject" when 'stop' exec "/usr/local/bin/jsvc -home #{JAVA_HOME} -cp #{JARS} -pidfile #{PID_FILE} -stop mypackage.MyProject" end
原文:https://stackoverflow.com/questions/3112367
最满意答案
如果您采用以下
RecyclerView.Adapter
实现,您会注意到一些事情。 包含数据的List
是static
这意味着它不会在方向更改时重置。 我们正在向EditText
添加一个TextWatcher
,以允许我们在修改它们时更新它们,并且我们通过向视图添加标记来跟踪位置。 请注意,这是我的特殊方法,有很多方法可以解决这个问题。演示
适配器
public class SampleAdapter extends RecyclerView.Adapter{ private static List<String> mEditTextValues = new ArrayList<>(); public SampleAdapter(){ //Mocking content for the editText for(int i=1;i<=10;i++){ mEditTextValues.add("I'm editText number "+i); } notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new CustomViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.edittext,parent,false)); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { CustomViewHolder viewHolder = ((CustomViewHolder)holder); viewHolder.mEditText.setTag(position); viewHolder.mEditText.setText(mEditTextValues.get(position)); } @Override public int getItemCount() { return mEditTextValues.size(); } public class CustomViewHolder extends RecyclerView.ViewHolder{ private EditText mEditText; public CustomViewHolder(View itemView) { super(itemView); mEditText = (EditText)itemView.findViewById(R.id.editText); mEditText.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} public void afterTextChanged(Editable editable) {} public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if(mEditText.getTag()!=null){ mEditTextValues.set((int)mEditText.getTag(),charSequence.toString()); } } }); } } }
(gif可能看起来像是重置了,因为它处于循环中, 它不是 )
If you take for example the following
RecyclerView.Adapter
implementation, you'll notice a few things. TheList
containing the data isstatic
meaning it will not be reset on orientation changes. We are adding aTextWatcher
to theEditText
to allow us to update the values when they are modified, and also we are keeping track of the position by adding a tag to the view. Note that this is my particular approach, there are many ways of solving this.Demo
Adapter
public class SampleAdapter extends RecyclerView.Adapter{ private static List<String> mEditTextValues = new ArrayList<>(); public SampleAdapter(){ //Mocking content for the editText for(int i=1;i<=10;i++){ mEditTextValues.add("I'm editText number "+i); } notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new CustomViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.edittext,parent,false)); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { CustomViewHolder viewHolder = ((CustomViewHolder)holder); viewHolder.mEditText.setTag(position); viewHolder.mEditText.setText(mEditTextValues.get(position)); } @Override public int getItemCount() { return mEditTextValues.size(); } public class CustomViewHolder extends RecyclerView.ViewHolder{ private EditText mEditText; public CustomViewHolder(View itemView) { super(itemView); mEditText = (EditText)itemView.findViewById(R.id.editText); mEditText.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} public void afterTextChanged(Editable editable) {} public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if(mEditText.getTag()!=null){ mEditTextValues.set((int)mEditText.getTag(),charSequence.toString()); } } }); } } }
(gif may look like it's being reset, since it's in a loop, it's not)
相关问答
更多-
android中的EditTexts和ListView Practice无法正常工作(EditTexts and ListView Practice in android not working)[2022-05-15]
你没有指定你的按钮id。你只是声明按钮bt.you必须得到你在second.xml中指定的按钮的引用。 在错误中,它显示nullpointer Exception在第33行。这是您编写按钮单击的代码的位置。 编辑您的代码,并参考按钮bt,如下所示。 按钮bt =(按钮)findViewById(R.id.button Id)。 同样在第一次活动中编辑就像这样。 String s1 = e1.getText().toString(); String s2 = e2.getTex ... -
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
1.在你的循环中,你不需要调用ll = findViewById(R.id.layout_actual_effect); 。 2.使用LinearLayout作为全局变量,您可以在其他地方使用它 3.使用ll.getChildAt(position)来获取View,并使用editText.getText().toString()来获取值 4.在调用getValue之前调用createEditText 尝试这个 。 private int num_from_first_activity = 3; privat ...
-
你应该看看这里你应该看看共享的偏好, http://developer.android.com/reference/android/content/SharedPreferences.html ,我用这个并帮助我完成它,你需要保存每个编辑要保存的文本。 至于每一行,我建议制作一个数组或循环来保存行中的编辑框 You should have a look here You should take a look at the shared preferences, http://developer.androi ...
-
保存输入到RecyclerView的EditTexts中的值(Saving the values entered into EditTexts of a RecyclerView)[2022-02-20]
如果您采用以下RecyclerView.Adapter实现,您会注意到一些事情。 包含数据的List是static这意味着它不会在方向更改时重置。 我们正在向EditText添加一个TextWatcher ,以允许我们在修改它们时更新它们,并且我们通过向视图添加标记来跟踪位置。 请注意,这是我的特殊方法,有很多方法可以解决这个问题。 演示 适配器 public class SampleAdapter extends RecyclerView.Adapter{ private static List< ... -
我已经解决了这个问题。 如果有人遇到类似的问题,你所要做的就是在活动下的manifest放置android:windowSoftInputMode="adjustPan" 。 因此,我输入每个练习的信息的活动称为SetCustomExercisesInfo ,我在其中放置了android:windowSoftInputMode="adjustPan" 。ArrayList
stringList = new ArrayList (); //Generic ArrayList to Store your Strings stringList.add(et1.getText()) ;//do this for your 3 textviews stringList.add(et2.getText()) ; stringList.add(et3.getText()) ; int count=0; Iterator ... Android在SharedPreference中保存Edittexts的值(Android Save values of Edittexts in SharedPreference)[2023-03-28]
getIntent().getStringExtra("monthstr"); 返回null。 首先,我建议你写if条件更多null安全性: if("1".equals(monthstring)) 永远不会抛出NPE 。 此外: monthstr为null 。 你用null值传递它。 不幸的是,你没有发布足够的代码来查看原因。 请发布全班UserDetailsActivity getIntent().getStringExtra("monthstr"); returns null. First of ...如何使用Java中的多个editTexts从总值中扣除(How to deduct from a total value using multiple editTexts in Java)[2023-04-29]
萨拉姆! 此方法将您的需求返回为double: public double sumInputs(double totalValue) { EditText[] inputs = {mPtEditText, mRebEditText, mAssEditText, mStlEditText, mBlkEditText}; double sum = 0.0; for (int i = 0; i < inputs.length; i++) sum = ...您可以使用LinearLayout创建此布局,其属性为android:orientation="horizontal" 。 在LinearLayout添加4个EditText ,并为每个EditText添加属性android:layout_weight="1"以获得相等的width 。 这是您想要的布局:相关文章
更多- Why Ruby
- Hadoop Java程序-files功能测试
- 启动script/console时必须在前面加ruby,否则不能启动?
- ruby 全局变量
- Ruby常用的内部变量
- flume写入Hadoop hdfs报错 Too many open files
- Python 列表(list)操作
- ruby的gsub方法
- Groovy 文件I/O 操作详解
- elasticsearch too many open files
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)